2017-12-10 13 views
0

一時ファイルを作成し、使用可能なファイルに名前を変更しようとしています。 tempファイルは%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)'が機能しない場合、 'renameTo(errFile)'はローカル変数に設定してそれを表示するためにfalseを返すでしょう。この場合、無効なパスが選択されている可能性があります。 –

答えて

0

名前を変更できない理由はいくつかあります。一般的なものは次のとおりです。

  • ソースまたは宛先ディレクトリに対する書き込み権限がありません。
  • 名前を変更するファイルが開いています(Windowsの場合)
  • 異なるファイルシステム間で名前を変更しようとしています。

File.renameToを使用している場合は、これらの(その他の)失敗の原因を診断するのが難しい場合があります。なぜなら、取得するのはすべてブール値の戻り値だからです。

代わりにFiles.moveを使用することをおすすめします。ファイルシステム間でのファイルの移動に対応でき、ファイルの名前を変更できない場合は例外がスローされます。

関連する問題