2016-12-13 6 views
0

このスワップファイル関数を呼び出して実行する必要がありますが、フラグ値は常にfalseのままです。ファイルを削除してフラグ値をtrueにする必要があります。フラグ値をtrueにする必要があります

void swap_file() 
{ 
    File f = new File("E:\\dream_store\\Employee.txt"); 
    File t = new File("E:\\dream_store\\temp.txt"); 
    boolean flag = f.delete(); 
    t.renameTo(f); 
    if (flag) 
    { 
     JOptionPane.showMessageDialog(null, "File swaped"); 
    } 
    else JOptionPane.showMessageDialog(null, "File not swaped"); 
} 
+1

手順1)「ファイル」は使用しないでください。 ['Path'](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Path.html)を使用してください。ステップ2)あなたのロジックが実際に何をしているのかを調べる - 現在、あなたは 'delete'の結果に' flag'を割り当てます。 'flag'を無視して' renameTo'を呼び出し、結果を無視します。その後、 'flag'の値に基づいて出力します。それはちょっと...奇妙です。 –

答えて

0

File.delete()は、ファイルが正常に削除された場合にのみtrueを返します。したがって、戻り値がfalseの場合、何らかの理由で削除が行われていません。

あなたのパスが正しいことを確認するには、一時的であっても、削除の前にいくつかのコードを追加する価値があります。 (最低でも)試してみてください:あなたがしてテストすることができ、他の方法についてFileためのドキュメントで

if(! f.exists()) { 
     throw new FileNotFoundException("File does not exist: " + f); 
} 

ルック。

+1

'assert'を動作させるには、コードを' -ea'で実行する必要があります。 ... –

+0

初心者がif文を使う方が簡単かもしれません。変化。 – slim

0

あなたはjava.nio.fileからFilesを使用する必要がありますし、使用することができますが存在しない場合を除き、ファイルは常に、移動されますので、ここでフラグは、何の意味も持たないであろうことを

Path sourceFile = Paths.get("path to the source file") 
Path targetFile = Paths.get("path to the target file") 
Files.move(sourceFile, targetFile, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE); 

注意を。存在しない場合は、Files.exists(...)を呼び出して確認できます。

ファイル置換ファイルがある場合にメッセージを印刷する場合は、try ... catch (IOException e)にそのメッセージをラップすることができます。

関連する問題