Java文件搜索问题

时间:2010-03-20 17:52:59

标签: java file-io

我需要在文件中搜索一个单词并使用该单词返回整行和行号,然后编辑该行并写回该文件。也许行号不是编辑文件中的行所必需的。我正在阅读用regexp和打开文件的文件通道后阅读,但我无法获得行号。也许还有其他更好的方法来做到这一点。你能帮我解决一下这个问题吗?

2 个答案:

答案 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