Windows 폴더의 파일 이동/생성이 해당 경로의 파일을 사용하여 작업을 진행할 때 타이밍 문제가 발생합니다.파일 만들기/이동을 완료하기 위해 창에서 대기중인 실행 가능한 작업에 대한 Thread.sleep의 영향
그래서 Windows가 작동 할 때까지 thread.sleep (30ms)를 사용하여 해당 작업을 실행하는 deamon 스레드를 잠자고 있고 FileNotFoundException없이 정상적으로 실행할 수 있습니다.
초기화 클래스
Thread t = new Thread (processTask);
t.setdaemon(true)
t.start();
작업 클래스
class ProcessTask() extends Runnable
{
Files.move(source, destination, copyoption);
Thread.sleep(30ms); //to wait for windows to complete move
new FileInputstream(sourceFile);
}
확인 잠 단지 내 현재 데몬 스레드에 대한 (30ms의)를 Thread.sleep를시겠습니까? 수면이 어디에 있는지 확인하는 방법이 있습니까
코드가 모순적입니다. 'source'에서'destination'으로 옮기면 이후에 소스를 열 수 없다는 것이 분명 합니다만,'sourceFile'은 전혀 조작에 관여하지 않는 변수입니다. 게다가,'FileInputstream'은 NIO와는 다른 라이브러리 코드를 사용합니다. 'destination'이 당신이 실제로 열고 자하는 것을 나타내는'Path'라고 가정하면, 대신'Files.newInputStream (destination)'을 시도 할 것입니다. – Holger