我想将文件'A'的内容复制到文件'B'。 复制完成后,我想清除文件'A'的内容,并希望从头开始写。 我无法删除文件'A',因为它与其他任务有关。
我能够使用java的文件API(readLine())复制内容,但不知道如何清除文件内容并将文件指针设置为文件的开头。
答案 0 :(得分:124)
只需在文件中打印一个空字符串:
PrintWriter writer = new PrintWriter(file);
writer.print("");
writer.close();
答案 1 :(得分:63)
我不相信你甚至不得不在文件中写一个空字符串。
PrintWriter pw = new PrintWriter("filepath.txt");
pw.close();
答案 2 :(得分:29)
您需要RandomAccessFile类中的setLength()方法。
答案 3 :(得分:15)
简单,什么都不写!
FileOutputStream writer = new FileOutputStream("file.txt");
writer.write(("").getBytes());
writer.close();
答案 4 :(得分:9)
进行截断操作的一个衬垫:
FileChannel.open(Paths.get("/home/user/file/to/truncate"), StandardOpenOption.WRITE).truncate(0).close();
Java文档中提供了更多信息:https://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html
答案 5 :(得分:5)
从A复制到B再次打开文件A到写入模式,然后在其中写入空字符串
答案 6 :(得分:5)
下面怎么样:
File temp = new File("<your file name>");
if (temp.exists()) {
RandomAccessFile raf = new RandomAccessFile(temp, "rw");
raf.setLength(0);
}
答案 7 :(得分:4)
java的最佳伴侣之一是Apache Projects,请参考它。对于与文件相关的操作,您可以参考Commons IO项目。
以下一行代码将帮助我们将文件设为空。
FileUtils.write(new File("/your/file/path"), "")
答案 8 :(得分:4)
只需写下:
FileOutputStream writer = new FileOutputStream("file.txt");
答案 9 :(得分:2)
将空字符串写入文件,刷新并关闭。确保文件编写器不在追加模式下。我认为应该这样做。
答案 10 :(得分:1)
如果您之后不需要使用作者,最简洁,最干净的方法就是这样:
new FileWriter("/path/to/your/file.txt").close();
答案 11 :(得分:0)
您可以使用
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);
文件写入器构造函数中的true将启用追加。
答案 12 :(得分:0)
FileOutputStream fos = openFileOutput("/*file name like --> one.txt*/", MODE_PRIVATE);
FileWriter fw = new FileWriter(fos.getFD());
fw.write("");
答案 13 :(得分:0)
使用try-with-resources编写器将自动关闭:
import org.apache.commons.lang3.StringUtils;
final File file = new File("SomeFile");
try (PrintWriter writer = new PrintWriter(file)) {
writer.print(StringUtils.EMPTY);
}
// here we can be sure that writer will be closed automatically
答案 14 :(得分:0)
使用:新的Java 7 NIO库,尝试
if(!Files.exists(filePath.getParent())) {
Files.createDirectory(filePath.getParent());
}
if(!Files.exists(filePath)) {
Files.createFile(filePath);
}
// Empty the file content
writer = Files.newBufferedWriter(filePath);
writer.write("");
writer.flush();
以上代码检查Directoty是否存在(如果未创建目录),检查文件是否存在,是否写入空字符串并刷新缓冲区,最后使写入器指向空文件
答案 15 :(得分:0)
您要做的就是以截断模式打开文件。任何Java文件输出类都会自动为您完成此操作。
答案 16 :(得分:-2)
你可以写一个通用的方法(它太晚了,但下面的代码会帮助你/其他人)
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;
}