Windowsフォルダ上のファイルの移動/作成が、そのパス上のファイルを使用してタスクのタイミングの問題を引き起こしている状態がある実行可能なタスクでThread.sleepがファイルの作成/移動を完了するのを待っている
私は、Windowsが動作するまでThread.sleep(30ms)を使用してそのタスクを実行しているデーモンスレッドをスリープ状態にしており、FileNotFoundExceptionなしで正常に動作することができます。
初期クラス
Thread t = new Thread (processTask);
t.setdaemon(true)
t.start();
Taskクラス
class ProcessTask() extends Runnable
{
Files.move(source, destination, copyoption);
Thread.sleep(30ms); //to wait for windows to complete move
new FileInputstream(sourceFile);
}
必ず睡眠だけで私の現在のデーモンスレッド用(30ミリ秒)をのThread.sleepでしょうか?睡眠がどこで行われているかを確認する方法がありますか?
あなたのコードは矛盾しています。 'source'から' destination'に移動した場合、後でソースを開くことができないことは明らかですが、 'sourceFile'は操作にまったく関与しない変数です。さらに、 'FileInputstream'はNIOとは異なるライブラリコードを使用します。 'destination'はあなたが実際に開きたいものを表す' Path'であると仮定して、代わりに 'Files.newInputStream(destination)'を試してみます。 – Holger