我编写的代码本应该覆盖选定文本文件的内容,但实际上却是在末尾追加内容。请问我哪里出了问题?
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”时刻!我一直在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();
}