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

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

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

只需在文件中打印一个空string:

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

我不相信你甚至不得不写一个空string的文件。

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

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

简单,什么都不要写!

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

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

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

下面的一行代码将帮助我们使文件变空。

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

写一个空string到文件,刷新和closures。 确保文件写入器不处于附加模式。 我认为应该这样做。

只要写:

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

下面怎么样:

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

一个内衬,使截断操作:

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

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

如果你以后不需要使用这个作者,那么最短和最干净的方法就是这样的:

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

您可以使用

 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); 

在文件写入器构造函数中是真的将启用附加。

FileOutputStream fos = openFileOutput(“/ file name – > one.txt /”,MODE_PRIVATE); FileWriter fw = new FileWriter(fos.getFD()); fw.write( “”);

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

 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; }