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

Kem*_*abe 4 java file formatter clear

我想知道清除文件的最佳方法是什么.我知道java会自动创建一个文件

f = new Formatter("jibberish.txt");  
s = new Scanner("jibberish.txt");
Run Code Online (Sandbox Code Playgroud)

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

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

CKi*_*ing 6

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

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

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

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

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

File file = new File("jibberish.txt");
Scanner scanner = new Scanner(file);
Run Code Online (Sandbox Code Playgroud)


Ank*_*and 6

如果要清除文件而不删除可能是您可以解决此问题

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

编辑:它抛出异常所以需要捕获异常


The*_*der 5

我能想到的最好的是:

Files.newBufferedWriter(pathObject , StandardOpenOption.TRUNCATE_EXISTING);
Run Code Online (Sandbox Code Playgroud)

Files.newInputStream(pathObject , StandardOpenOption.TRUNCATE_EXISTING);
Run Code Online (Sandbox Code Playgroud)

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

希望能帮助到你