2016-08-01 5 views
0

내가 석영을 사용하여 일괄 처리 시스템을위한 프로그램을 작성되었고, 내가 문제를 발견,파일 renameTo 및 File.delete를

내가 한 디렉터리에서 다른 디렉터리로 파일을 이동하려는
if(!file.renameTo(new File(PATH_FILE_PROCESSED+file.getName())))System.out.println("Cannot Move File :"+file.getAbsolutePath()); 
else{ 
    if(!file.delete())System.out.println("Cannot Delete File :"+file.getAbsolutePath());  
} 

하지만 난 삭제할 수 없습니다 같은 과정에서 파일, 내 분석에서 나는 파일을 누른 다음 file.delete() 실행을 복사 완료하지 않은 것; 내 질문에, 거기에 파일을 복사 한 다음 file.delete를 실행할 때까지 기다릴 수있는 방법이 무엇입니까?

+0

코드를 읽으면'renameTo' 호출이 성공할 때'else' 블록으로 들어가는 것처럼 보입니다. 따라서 파일은 원래 위치에 더 이상 존재하지 않습니다. 따라서 더 이상 존재하지 않으므로 원래 위치에서 삭제할 수 없습니다. –

+0

java에서 renameTo는 실제로 파일을 옮기지 않고 파일을 옮긴다. 왜 내가 성공할 때 삭제하고 싶은가? –

+0

'File.renameTo'가 파일 이름을 바꾸지 않고 컴퓨터에 복사한다면, 플랫폼에 문제가있는 것보다 그렇게하기로되어 있지 않습니다. 같은 문제가 삭제 작업에도 영향을 미칠 수 있습니다. –

답변

0

이름 바꾸기가이 파일을 복사하지 않는 한 거의 즉시이다 덕분에, 그냥 창에

(당신이 파일 시스템 사이를 이동하지 않는)가 나타납니다있는 디렉토리로 이동, 당신은 이름을 바꾸거나 경우 삭제할 수 없습니다 당신은 어딘가에 파일을 열었습니다. 제대로 닫았는지 확인하십시오.

+0

@ Peter Lawrey에게 감사하지만 java.io.File에는 close() 명령이 없습니다. 다른 방법이 있습니까? –

+0

파일을 닫는 것이 실제 문제라면 여기에 파일을 읽거나 쓰는 데 사용할 수있는 몇 가지'InputStream' (또는'OutputStream'),'BufferedReader'를 찾으십시오. – Ephi

+0

@NoobatPrograming 파일을 어디에서 처리하고 있습니까? –

0

내가 이미 문제를 발견했다고 생각하는데, 문제는 내가 다른 파일에 이미 데이터를 삽입하여 데이터베이스에 복제본을 만들 때 우편 번호를 넣으면서 이런 오류가 발생한다는 것입니다. 그래서 질문에 답해 주셔서 감사합니다