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

时间:2011-08-09 10:07:56

标签: java android

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

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

17 个答案:

答案 0 :(得分:124)

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

PrintWriter writer = new PrintWriter(file);
writer.print("");
writer.close();

答案 1 :(得分:63)

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

PrintWriter pw = new PrintWriter("filepath.txt");
pw.close();

答案 2 :(得分:29)

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

答案 3 :(得分:15)

简单,什么都不写!

FileOutputStream writer = new FileOutputStream("file.txt");
writer.write(("").getBytes());
writer.close();

答案 4 :(得分:9)

进行截断操作的一个衬垫:

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

Java文档中提供了更多信息:https://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html

答案 5 :(得分:5)

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

答案 6 :(得分:5)

下面怎么样:

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

答案 7 :(得分:4)

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

以下一行代码将帮助我们将文件设为空。

FileUtils.write(new File("/your/file/path"), "")

答案 8 :(得分:4)

只需写下:

FileOutputStream writer = new FileOutputStream("file.txt");

答案 9 :(得分:2)

将空字符串写入文件,刷新并关闭。确保文件编写器不在追加模式下。我认为应该这样做。

答案 10 :(得分:1)

如果您之后不需要使用作者,最简洁,最干净的方法就是这样:

new FileWriter("/path/to/your/file.txt").close();

答案 11 :(得分:0)

您可以使用

FileWriter fw = new FileWriter(/*your file path*/);
PrintWriter pw = new PrintWriter(fw);
pw.write("");
pw.flush(); 
pw.close();

请记住不要使用

FileWriter fw = new FileWriter(/*your file path*/,true);

文件写入器构造函数中的true将启用追加。

答案 12 :(得分:0)

FileOutputStream fos = openFileOutput("/*file name like --> one.txt*/", MODE_PRIVATE);
FileWriter fw = new FileWriter(fos.getFD());
fw.write("");

答案 13 :(得分:0)

使用try-with-resources编写器将自动关闭:

import org.apache.commons.lang3.StringUtils;
final File file = new File("SomeFile");
try (PrintWriter writer = new PrintWriter(file))  {
    writer.print(StringUtils.EMPTY);                
}
// here we can be sure that writer will be closed automatically

答案 14 :(得分:0)

使用:新的Java 7 NIO库,尝试

        if(!Files.exists(filePath.getParent())) {
            Files.createDirectory(filePath.getParent());
        }
        if(!Files.exists(filePath)) {
            Files.createFile(filePath);
        }
        // Empty the file content
        writer = Files.newBufferedWriter(filePath);
        writer.write("");
        writer.flush();

以上代码检查Directoty是否存在(如果未创建目录),检查文件是否存在,是否写入空字符串并刷新缓冲区,最后使写入器指向空文件

答案 15 :(得分:0)

您要做的就是以截断模式打开文件。任何Java文件输出类都会自动为您完成此操作。

答案 16 :(得分:-2)

你可以写一个通用的方法(它太晚了,但下面的代码会帮助你/其他人)

public static FileInputStream getFile(File fileImport) throws IOException {
      FileInputStream fileStream = null;
    try {
        PrintWriter writer = new PrintWriter(fileImport);
        writer.print(StringUtils.EMPTY);
        fileStream = new FileInputStream(fileImport);
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            writer.close();
        }
         return fileStream;
}