Kar*_*nan 32 java overwrite filewriter
我写的代码应该覆盖所选文本文件的内容,但它会附加它.我究竟做错了什么?
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();
}
Run Code Online (Sandbox Code Playgroud)
编辑
我尝试制作一个新的temp.txt文件并将新内容写入其中,删除此文本文件并将temp.txt重命名为此文件.事实是,删除总是不成功.我不认为我必须为此更改用户权限吗?
此外,我的程序的一部分列出了该目录中的所有文件,因此我猜测它们正在被程序使用,因此无法删除.但为什么不覆盖?
解决了
我最大的"D'哦"时刻!我一直在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();
}
Run Code Online (Sandbox Code Playgroud)
小智 24
你的代码对我来说很好.它按预期替换了文件中的文本,但没有追加.
如果要追加,请在其中设置第二个参数
new FileWriter(fnew,false);
Run Code Online (Sandbox Code Playgroud)
为真;
解决了
我最大的“ D'oh”时刻!我一直在Eclipse上而不是在我执行它的cmd上编译它。因此,我新编译的类进入了bin文件夹,并且通过命令提示符编译的类文件在我的src文件夹中保持不变。我重新编译了我的新代码,它就像一个魅力。
File fold=new File("../playlist/"+existingPlaylist.getText()+".txt");
fold.delete();
//File temp=new File("../playlist/temp.txt");
File fnew=new File("../playlist/"+existingPlaylist.getText()+".txt");
String source = textArea.getText();
System.out.println(source);
/*FileWriter f2;
PrintWriter pw;
try {
f2 = new FileWriter(fnew,false);
pw= new PrintWriter(f2);
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));
}*/
try {
FileWriter f2 = new FileWriter(fnew, false);
f2.write(source);
f2.close();
//fnew.renameTo(fold);
//fold.renameTo(temp);
//temp.deleteOnExit();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
初始化文件对象后再添加一行
File fnew = new File("../playlist/" + existingPlaylist.getText() + ".txt");
fnew.createNewFile();
Run Code Online (Sandbox Code Playgroud)