1. ホーム
  2. java

[解決済み] javaでtxtファイルを上書きする

2022-02-05 07:34:26

質問

私が書いたコードは、選択したテキストファイルの内容の上に上書きするはずなのですが、追加されています。具体的に何が間違っているのでしょうか?

File fnew=new File("../playlist/"+existingPlaylist.getText()+".txt");
String source = textArea.getText();
System.out.println(source);
FileWriter f2;

try {
    f2 = new FileWriter(fnew,false);
    f2.write(source);
    /*for (int i=0; i<source.length();i++)
    {
        if(source.charAt(i)=='\n')
            f2.append(System.getProperty("line.separator"));
        f2.append(source.charAt(i));
    }*/
    f2.close();
} catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
}           

EDIT

temp.txtを新しく作ってそこに新しい内容を書き込んで、このテキストファイルを削除してtemp.txtをこのファイルにリネームしてみました。削除はいつも失敗します。この場合、ユーザーのパーミッションを変更する必要はないと思うのですが?

また、私のプログラムの一部がこのディレクトリ内のすべてのファイルをリストアップしているので、プログラムで使用されているため、削除できないのだと思われます。しかし、なぜ上書きされないのでしょうか?

解決済み

私の最大の危機は、quot;D'oh" 瞬間です。私はEclipseでコンパイルしていたのですが、cmdで実行していたのではありません。そのため、新しくコンパイルしたクラスはbinフォルダに移動し、コマンドプロンプトでコンパイルしたクラスファイルはsrcフォルダにそのまま残っていました。新しいコードで再コンパイルしたら、魅力的に動作するようになりました。

File fold=new File("../playlist/"+existingPlaylist.getText()+".txt");
fold.delete();
File fnew=new File("../playlist/"+existingPlaylist.getText()+".txt");
String source = textArea.getText();
System.out.println(source);

try {
    FileWriter f2 = new FileWriter(fnew, false);
    f2.write(source);
    f2.close();
} catch (IOException e) {
    e.printStackTrace();
}           

解決方法は?

解決済み

私の最大の危機は、quot;D'oh" 瞬間です。私はEclipseでコンパイルしていたのですが、cmdで実行していたのではありません。そのため、新しくコンパイルしたクラスはbinフォルダに移動し、コマンドプロンプトでコンパイルしたクラスファイルはsrcフォルダにそのまま残っていました。新しいコードで再コンパイルしたら、魅力的に動作するようになりました。

File fold = new File("../playlist/" + existingPlaylist.getText() + ".txt");
fold.delete();

File fnew = new File("../playlist/" + existingPlaylist.getText() + ".txt");

String source = textArea.getText();
System.out.println(source);

try {
    FileWriter f2 = new FileWriter(fnew, false);
    f2.write(source);
    f2.close();

} catch (IOException e) {
    e.printStackTrace();
}