如何覆盖现有的 .txt 文件
Posted
技术标签:
【中文标题】如何覆盖现有的 .txt 文件【英文标题】:How to overwrite an existing .txt file 【发布时间】:2015-01-03 07:18:34 【问题描述】:我有一个创建 .txt 文件的应用程序。我想覆盖它。这是我的功能:
try
String test = "Test string !";
File file = new File("src\\homeautomation\\data\\RoomData.txt");
// if file doesnt exists, then create it
if (!file.exists())
file.createNewFile();
else
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(test);
bw.close();
System.out.println("Done");
catch(IOException e)
e.printStackTrace();
如果文件存在的话,else子句中应该放什么,这样才能覆盖?
【问题讨论】:
Overwriting txt file in java的可能重复 【参考方案1】:你不需要做任何事情,默认行为是覆盖。
不知道为什么我被否决了,说真的……这段代码总是会覆盖文件
try
String test = "Test string !";
File file = new File("output.txt");
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(test);
bw.close();
System.out.println("Done");
catch(IOException e)
e.printStackTrace();
【讨论】:
【参考方案2】:你不需要在 else 子句中做任何特别的事情。您实际上可以使用Writer
以两种不同的模式打开文件:
true
的布尔值指定)将新数据追加到现有数据中
【讨论】:
“你不需要在 else 子句中做任何特别的事情”...实际上你的意思是,他也不应该有 if 子句。只是想自己提出一些聪明的评论:) 我认为createNewFile
会创建文件的所有不存在的父目录,但在查看文档后,它没有(File.mkdirs()
这样做)。所以是的,这里不需要 if 子句【参考方案3】:
FileWriter(String fileName, boolean append)
在给定文件名的情况下构造一个 FileWriter 对象,该对象带有一个布尔值,指示是否附加写入的数据。
下面的一行代码将帮助我们使文件为空。
FileUtils.write(new File("/your/file/path"), "")
下面的代码将帮助我们删除文件。
try
File file = new File("src\\homeautomation\\data\\RoomData.txt");
if(file.delete())
System.out.println(file.getName() + " is deleted!");
else
System.out.println("Delete operation is failed.");
catch(Exception e)
e.printStackTrace();
【讨论】:
【参考方案4】:只需在 else 块中调用 file.delete()
。如果这是你想要的,那应该删除文件。
【讨论】:
他不想删除文件,他想覆盖它。他说删除是因为他不知道Writer
是如何工作的,并且认为他需要删除文件以覆盖它
他可以删除它,然后在它不存在的情况下执行相同的操作。这就是为什么我说“如果那是你想要的”,我不太确定他想要什么。
那为什么还要删除它,因为他不这样做会得到相同的结果?
@Dici 对,这确实很聪明。我不会想出来的。以上是关于如何覆盖现有的 .txt 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 If Not File.Exists 覆盖现有的 XML 文件
如何将更改保存到现有的 excel 文件,而不是创建包含更改的 txt 文件?