java 文件清空内容_关于java:如何清空文件内容,然后多次附加文本

我有一个文件(file.txt),我需要清空他当前的内容,然后多次附加一些文本。

示例:file.txt当前内容为:

aaa

bbb

ccc

我想删除此内容,然后第一次追加:

ddd

第二次:

eee

等等...

我试过这个:

// empty the current content

fileOut = new FileWriter("file.txt");

fileOut.write("");

fileOut.close();

// append

fileOut = new FileWriter("file.txt", true);

// when I want to write something I just do this multiple times:

fileOut.write("text");

fileOut.flush();

这工作正常,但似乎效率低下,因为我打开文件2次只是为了删除当前内容。

当您打开文件以使用新文本编写文件时,它将覆盖文件中的任何内容。

这样做的好方法是

// empty the current content

fileOut = new FileWriter("file.txt");

fileOut.write("");

fileOut.append("all your text");

fileOut.close();

嗯,实际上,你不需要关闭它并再次打开它。

第一个答案是不正确的。如果使用第二个参数的true标志创建新的文件编写器,它将以追加模式打开。这将导致任何write(字符串)命令将"附加"文本"附加"到文件的末尾,而不是删除已存在的任何文本。

你阅读我的评论很好,但你最好只编辑上一个问题。答案应该独立存在,没有必要引用"第一"答案,特别是因为stackoverflow没有按顺序排序问题。

我尝试这样做,但我没有在答案上看到"添加评论"按钮。有什么我想念的吗?

你还没有足够的声誉。

我能想到的最好的是:

Files.newBufferedWriter(pathObject , StandardOpenOption.TRUNCATE_EXISTING);

Files.newInputStream(pathObject , StandardOpenOption.TRUNCATE_EXISTING);

在这两种情况下,如果pathObject中指定的文件是可写的,那么该文件将被截断。

无需调用write()函数。上面的代码足以清空/截断文件。这是java 8中的新功能。

希望能帮助到你

我看到这个问题在很多Java版本之前得到了回答......

从Java 1.7开始,使用新的FileWriter + BufferWriter + PrintWriter进行追加(按照本SO答案中的建议),我建议删除文件然后添加:

FileWriter fw = new FileWriter(myFilePath); //this erases previous content

fw = new FileWriter(myFilePath, true); //this reopens file for appending

BufferedWriter bw = new BufferedWriter(fw);

PrintWriter pw = new PrintWriter(bw);

pw.println("text");

//some code ...

pw.println("more text"); //appends more text

pw.flush();

pw.close();

我只是傻瓜。

我只需要这样做:

// empty the current content

fileOut = new FileWriter("file.txt");

// when I want to write something I just do this multiple times:

fileOut.write("text");

fileOut.flush();

并在结束时关闭流。

给stackoverflow留出一些时间来发布Pierpaolo的答案。这是一个"游戏"网站,在第一天左右不回答您自己的问题。

抱歉。我要删除我的答案吗?

不,不管怎样,问题还可以,现在就回答,下次还是留些时间给别人回复。

很好解决,Pierpaolo :)

@owlstead:"在第一天左右不回答你自己的问题"为什么不呢?

@BoltClock嗯,当你打字时,人们正在写答案。他们花时间阅读它,想想它只是为了发现作者过早地发布了一些内容。这种问题不会在前30分钟左右得到正确回答(在这种情况下,可能一天有点长)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值