私が書いたコードは、選択したテキスト ファイルの内容を上書きするはずですが、それを追加しています。私は正確に何を間違っていますか?
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();
}
編集
新しい temp.txt ファイルを作成して新しい内容を書き込んで、このテキスト ファイルを削除し、temp.txt の名前をこれに変更してみました。つまり、削除は常に失敗します。このためにユーザー権限を変更する必要はないと思いますか?
また、プログラムの一部がこのディレクトリ内のすべてのファイルを一覧表示しているため、それらはプログラムによって使用されているため、削除できないと推測しています。しかし、なぜ上書きしないのですか?
解決した
私の最大の「D'oh」の瞬間!私はそれを実行していたcmdではなく、Eclipseでコンパイルしてきました。そのため、新しくコンパイルされたクラスは 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();
}