如何删除文本文件的内容而不删除自己
我想将文件“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; }