Java - 如何清除文本文件而不删除它?

时间:2015-04-26 13:27:23

标签: java file clear formatter

我想知道清除文件的最佳方法是什么。我知道java会自动使用

创建一个文件
f = new Formatter("jibberish.txt");  
s = new Scanner("jibberish.txt");

如果不存在。但是,如果一个存在并且我想在每次运行程序时清除它会怎么样?这就是我想知道的:再次说出如何清除已存在的文件只是空白? 这就是我的想法:

public void clearFile(){
    //go through and do this every time in order to delete previous crap
    while(s.hasNext()){
        f.format(" ");
    }
} 

5 个答案:

答案 0 :(得分:6)

如果您想清除文件而不删除,可以解决此问题

public static void clearTheFile() {
        FileWriter fwOb = new FileWriter("FileName", false); 
        PrintWriter pwOb = new PrintWriter(fwOb, false);
        pwOb.flush();
        pwOb.close();
        fwOb.close();
    }

编辑:它抛出异常,因此需要捕获异常

答案 1 :(得分:4)

我能想到的最好的是:

Files.newBufferedWriter(pathObject , StandardOpenOption.TRUNCATE_EXISTING);

Files.newInputStream(pathObject , StandardOpenOption.TRUNCATE_EXISTING);

在两种情况下,如果pathObject中指定的文件是可写的,那么该文件将被截断。无需调用write()函数。上面的代码足以清空/截断文件。这是java 8中的新功能。

希望它有助于

答案 2 :(得分:3)

您可以删除该文件并再次创建它,而不是执行大量的io。

if(file.delete()){
    file.createNewFile();
}else{
    //throw an exception indicating that the file could not be cleared
}

或者,您可以一次性覆盖文件的内容,如其他答案中所述:

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

此外,您正在使用Scanner中带有String参数的构造函数。此构造函数不会从文件中读取,而是使用String参数作为要扫描的文本。您应该首先创建一个文件句柄,然后将其传递给Scanner构造函数:

File file = new File("jibberish.txt");
Scanner scanner = new Scanner(file);

答案 3 :(得分:1)

您只需将空字符串打印到文件中即可。

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

答案 4 :(得分:0)

类型

new PrintWriter(PATH_FILE).close();