아래 메소드는 메소드 호출을 통해 수신되는 경로를 "작업 중"디렉토리에서 "이동"디렉토리로 단순히 이동시키는 기능을 가지고 있습니다. 그것은 모두 작동하지만 파일 이름에 .renameTo 메소드가 false를 반환하는 두 개의 확장자 (예 : .xml.md5)가있는 이름의 경우. 아래 코드를 변경하여 실행중인 OS에 관계없이 작동하는 방법이 있습니까? (현재 Windows입니다.)Java 삭제 및 파일 이름 바꾸기
public void moveToDir(String workDir, String moveDir) throws Exception {
File tempFile = new File(workDir);
File[] filesInWorkingDir = tempFile.listFiles();
for (File file : filesInWorkingDir) {
System.out.println(file.getName());
if (new File(moveDir + File.separator + file.getName()).exists())
new File(moveDir + File.separator + file.getName()).delete();
System.out.println(moveDir + File.separator + file.getName());
Boolean renameSuccessful = file.renameTo(new File(moveDir + File.separator + file.getName()));
if (!renameSuccessful) throw new Exception("Can't move file to " + moveDir +": " + file.getPath());
}
}
이동하려는 파일과 이동하려는 파일에 대한 쓰기 권한이 있는지 확인 했습니까? (file.canWrite()) 아마도이 권한 문제가 될 수 있습니다 ... – Alderath
시도해 FileUtils.moveFile() – Arasu
@ 아라스 -이 시도는 예외 : "원래 파일을 삭제하는 데 실패했습니다 \ xxxxxxxxxxxxxx. xml.md5 '를 복사 한 후'successful \ xxxxxxxxxxxxxx.xml.md5 ' " – Matej