【发布时间】:2012-11-23 15:44:55
【问题描述】:
我编写的代码应该覆盖所选文本文件的内容,但它正在附加它。我到底做错了什么?
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 上编译它,而不是在我执行它的 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();
}
【问题讨论】:
-
我认为应该可以。它在我的情况下工作。
-
它也适用于我的情况。可能是您的程序中发生了一些奇怪的事情。尝试解决该问题。首先删除整个内容,然后开始将新内容写入同一文件。
-
关于如何删除内容的任何提示?
-
fnew.delete();这应该可以解决问题。
-
试过了。将其设置为布尔变量。它总是错误的:\
标签: java overwrite filewriter