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

我想知道清除文件的最佳方法是什么。 我知道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(" "); } } 

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

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

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

我能想到的最好的是:

 Files.newBufferedWriter(pathObject , StandardOpenOption.TRUNCATE_EXISTING); 

 Files.newInputStream(pathObject , StandardOpenOption.TRUNCATE_EXISTING); 

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

希望能帮助到你

您可以删除该文件并再次创建它,而不是做很多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); 

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

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