2017-12-10 12 views
0

임시 파일을 만들고 사용 가능한 파일 이름을 바꾸려고합니다. 임시 파일이 % temp %에서 생성되었지만 이름이 바뀌지 않습니다. -임시 파일 만들기 및 실제 파일 이름 바꾸기

static void writeFile() { 
    try { 
     File tempFile = File.createTempFile("TEMP_FAILED_MASTER", ""); 

     PrintWriter pw = new PrintWriter(tempFile); 
     for (String record : new String[] {"a","b"}) { 
      pw.println(record); 
     } 
     pw.flush(); 
     pw.close(); 
     System.out.println(tempFile.getAbsolutePath()); 

     File errFile = new File("C:/bar.txt"); 
     tempFile.renameTo(errFile); 
     System.out.println(errFile.getAbsolutePath()); 
     System.out.println("Check!"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

괜찮습니다. – davidxxx

+0

작동하지 않으면 'renameTo (errFile)'은 로컬 변수로 설정하여보고 인쇄 할 경우 false를 반환합니다. 이 경우 잘못된 경로를 선택했을 가능성이 큽니다. –

답변

0

이름을 바꿀 수없는 몇 가지 이유가 있습니다. 일반적인 내용은 다음과 같습니다.

  • 원본 또는 대상 디렉터리에 대한 쓰기 권한이 없습니다.
  • 이름 바꾸기중인 파일이 열려 있습니다 (Windows에서)
  • 다른 파일 시스템에서 이름을 바꾸려고합니다.

File.renameTo을 사용하면 부작용을 진단하기가 어려울 수 있습니다. 단, 반환 값은 모두 부울 값입니다.

대신 Files.move을 사용하는 것이 좋습니다. 파일 시스템간에 파일을 이동할 때 대처할 수 있으며 파일의 이름을 바꿀 수없는 경우 예외가 발생합니다.