在 java 中覆盖 txt 文件

2022-09-01 07:40: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();
}           

编辑

我尝试制作一个新的临时.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();
}           

答案 1

您的代码对我工作正常。它按预期替换了文件中的文本,并且没有追加。

如果要追加,请将第二个参数设置为

new FileWriter(fnew,false);

到真;


答案 2

解决

我最大的“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();
}   

推荐