如何删除文本文件的内容而不删除自身

bri*_*rig 85 java android

我想将文件'A'的内容复制到文件'B'.复制完成后,我想清除文件'A'的内容,并希望从头开始写.我无法删除文件'A',因为它与其他一些任务有关.

我能够使用java的文件API(readLine())复制内容,但不知道如何清除文件的内容并将文件指针设置为文件的开头.

Vla*_*lad 129

只需在文件中打印一个空字符串:

PrintWriter writer = new PrintWriter(file);
writer.print("");
writer.close();
Run Code Online (Sandbox Code Playgroud)

  • 写入不是必需的,如果另一个任务打开了文件,则打开可能甚至不可能. (14认同)
  • @Andro,注意时间戳和标签吗?当时我记得这是跨 Android 设备清空文件的最可靠方法。 (2认同)

Cam*_*eng 68

我不相信你甚至不得不在文件中写一个空字符串.

__CODE__

  • 怎么样只是`new PrintWriter("filepath.txt").close();`? (30认同)
  • 你是对的.显示写入的所有答案都是错误的或者最多是冗余的. (9认同)

Bur*_*ear 30

您需要RandomAccessFile类中的setLength()方法.

  • 这实际上是唯一正确的答案,因为它不会删除文件.所有其他答案. (5认同)

Mic*_*cky 17

简单,什么都不写!

FileOutputStream writer = new FileOutputStream("file.txt");
writer.write(("").getBytes());
writer.close();
Run Code Online (Sandbox Code Playgroud)

  • -1:java.lang.String没有toByteArray()方法,6或7都没有.http://docs.oracle.com/javase/6/docs/api/java/lang/String. (3认同)

小智 10

一个衬里进行截断操作:

FileChannel.open(Paths.get("/home/user/file/to/truncate"), StandardOpenOption.WRITE).truncate(0).close();
Run Code Online (Sandbox Code Playgroud)

有关Java文档的更多信息:https://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html


Anv*_*hat 6

Java 的最佳伴侣之一是Apache Projects,请参考它。文件相关操作可以参考Commons IO项目。

下面一行代码将帮助我们将文件清空。

FileUtils.write(new File("/your/file/path"), "")
Run Code Online (Sandbox Code Playgroud)


Ras*_*sel 5

从A复制到B后再次打开文件A到写入模式,然后在其中写入空字符串


Man*_* Vu 5

写就好了:

FileOutputStream writer = new FileOutputStream("file.txt");
Run Code Online (Sandbox Code Playgroud)


San*_*ngh 5

下面怎么样:

File temp = new File("<your file name>");
if (temp.exists()) {
    RandomAccessFile raf = new RandomAccessFile(temp, "rw");
    raf.setLength(0);
}
Run Code Online (Sandbox Code Playgroud)