我需要在文件中搜索一个单词并使用该单词返回整行和行号,然后编辑该行并写回该文件。也许行号不是编辑文件中的行所必需的。我正在阅读用regexp和打开文件的文件通道后阅读,但我无法获得行号。也许还有其他更好的方法来做到这一点。你能帮我解决一下这个问题吗?
答案 0 :(得分:1)
首先要避免潜在的误解,只需指出行号并更改行,就无法动态编辑文件。您需要阅读整个内容并以任何方式将整个内容写回同一文件,即使您只需要编辑单个字符。
关于行号,您只需在循环中添加一个增量计数器,其中您使用BufferedReader#readLine()
读取文件的每一行。您也可以使用LineNumberReader
,但这并不像初学者所期望的那样真正起作用。例如,setLineNumber()
实际上不会跳过给定行的行。
答案 1 :(得分:0)
为什么不......像:
BufferedReader reader = new BufferedReader(new FileReader(file));
BufferedWriter writer = new BufferedWriter(new FileWriter(outFile));
int lineNo = 0;
String line;
while ((line = reader.readLine()) != null) {
lineNo++;
if (line.contains("word")) {
//manipulate line
line = "changed content";
}
writer.write(line);
}
reader.close();
writer.close();
或在您阅读整个文件后进行写作......
警告:要正确编码处理,您应该使用:
new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
// the same for the writer