問題は、残りのロジックが機能する前にファイルを移動する必要があるため、メソッドが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を再度移動しようとしました。したがって、失敗しました。
私が言ったように、非常に愚かですが、私と一緒に耐えてくれてありがとう。