Java 如何高效地写入,而不经常创建新的文件对象?
我看到这个很棒 我有两个问题: 1) 如何修改当前正在阅读的文件内容 i、 我读了一行,根据算法结果修改它,然后我开始读下一行 2) 您将如何逐步写入文件 i、 我读了一行,根据算法结果在输出文件中写了一行,然后开始读下一行 我想用:Java 如何高效地写入,而不经常创建新的文件对象?,java,file,io,Java,File,Io,我看到这个很棒 我有两个问题: 1) 如何修改当前正在阅读的文件内容 i、 我读了一行,根据算法结果修改它,然后我开始读下一行 2) 您将如何逐步写入文件 i、 我读了一行,根据算法结果在输出文件中写了一行,然后开始读下一行 我想用: private static void writeUsingFiles(String data) { try { Files.write(Paths.get("/Users/pankaj/files.txt"), data.
private static void writeUsingFiles(String data) {
try {
Files.write(Paths.get("/Users/pankaj/files.txt"), data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
但后来我想如果这对很多人来说都是浪费
是否每次都创建新的文件对象
我读了一行,根据算法结果在输出文件中写了一行新行,然后开始读下一行
使用BufferedWriter
和BufferedReader
可通过适当的资源处理获得更好的性能
示例代码
String line = null;
try (BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {
while ((line = reader.readLine()) != null) { // read line
String processedLine = getProcessedLine(line); // get processed line
writer.write(processedLine); // writer the process line
writer.newLine(); // writer new line if needed
}
}
private String getProcessedLine(String line){...}
最后删除
input.txt
文件,并将output.txt
重命名为input.txt我不知道如何修改您目前正在阅读的文件,一个想法是使用临时文件来完成,当读取到旧文件时,您可以更改它并保存到新文件中
如果你想一行一行地写,同时运行一些算法,我认为你应该使用这种方式:
public static void writeFile1() throws IOException {
File fout = new File("out.txt");
FileOutputStream fos = new FileOutputStream(fout);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
for (int i = 0; i < 10; i++) {
// Use your algorithm
bw.write("something");
bw.newLine();
}
bw.close();
}
public static void writeFile1()引发IOException{
File fout=新文件(“out.txt”);
FileOutputStream fos=新的FileOutputStream(fout);
BufferedWriter bw=新的BufferedWriter(新的OutputStreamWriter(fos));
对于(int i=0;i<10;i++){
//使用你的算法
写(“某物”);
换行符();
}
bw.close();
}
Java 8对流式数据提供了更多的支持(即始终只在内存中保留少量大型数据集,并在数据流经过时对其进行处理)。自Java 7以来是否不再需要刷新和关闭?@Loki yes不需要。