我看到了这个很棒的post on how to write to file in java。
我有两个问题:
1)你如何修改你现在正在阅读的文件内容?
即。我读了一行,根据算法结果对其进行了修改,然后我开始阅读下一行。
2)你会如何逐步写入文件?
即。我读了一行,我根据算法结果在输出文件中写了一个新行,然后我开始阅读下一行。
我想用:
private static void writeUsingFiles(String data) {
try {
Files.write(Paths.get("/Users/pankaj/files.txt"), data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
但后来我想如果这对许多写作来说是浪费?
每次都创建新的File对象吗?
答案 0 :(得分:1)
我读了一行,我根据算法结果在输出文件中写了一个新行,然后我开始读下一行
使用BufferedWriter
和BufferedReader
使用Java 7 The try-with-resources Statement,以便通过适当的资源处理获得更好的效果。
示例代码
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
。
答案 1 :(得分:1)
我现在不知道如何修改您正在阅读的文件,一个想法是使用临时文件来执行此操作,并且在将其读取到旧文件时,您可以更改它并保存在新的。
如果你想逐行编写它,同时运行一些算法,我认为你应该用这种方式:
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();
}