问题是我需要在我的其余逻辑工作之前移动文件,所以当方法返回 false 时我停止执行。
但是,当我在 Windows 资源管理器中检查文件时,它有一个新名称并且它移动了。
只是好奇为什么会这样。
这是我刚刚尝试重新创建问题的一些示例代码。这几乎是一样的,而且工作正常。
File testfile = new File("TestFile");
if(!testfile.exists()){
testfile.mkdirs();
}
File sample = new File("sample.txt");
if(sample.exists()){
boolean success = sample.renameTo(new File(testfile.getPath() + "\\" + sample.getName()));
if(success){
System.out.println("Moved");
}
else{
System.out.println("Failed");
}
}
编辑:解决了。很抱歉把大家的时间浪费在这么愚蠢的事情上。但是,如果不是为了发表这篇文章,我真的不认为我会追踪到这一点。
解决方案是我实际上是在循环几个文件来移动。当输出说它失败时,程序停止了,当我查看资源管理器时,实际上只有第一个文件被移动了,所以我认为它正在移动,然后返回 false。但是,问题是我使用了错误的变量作为索引,所以发生的事情是它确实成功地将文件移动到索引 0 中,然后当循环重复时索引没有增加,所以它试图再次移动索引 0 和因此失败了。
就像我说的,非常愚蠢,但感谢您对我的包容。