如何根据某些条件读取和修改文本文件

时间:2010-11-10 13:18:35

标签: java file-io

如何根据某些条件读取现有文本文件并修改其某些值,例如,如果我得到一些文本

Apple 1 3 5

现在,每当我得到一个整数值时,我必须将其计数增加1并再次保存回同一文件。

例如,如果我阅读上面的一些内容,我应该可以保存

Apple 2 4 6

再次回到同一个文件

我的代码看起来像

尝试{             FileWriter fstream = new FileWriter(“c:\ Apple.txt”,true);

        FileReader inputFileReader   = new FileReader("c:\\Apple.txt");
        BufferedReader inputStream   = new BufferedReader(inputFileReader);
        PrintWriter    outputStream  = new PrintWriter(fstream);



        while((inline=inputStream.readLine())!=null)
        {
            values=inline.split("-");

            Integer l = Integer.parseInt(values[2])+1;
            outputStream.print((inline.replaceAll(values[2],l.toString())));

        }

        outputStream.close();


    }

所以,我得到了像

这样的输出

Apple 1 3 5 Apple 1 4 5

但我要求的输出是

Apple 1 4 5

先谢谢

3 个答案:

答案 0 :(得分:1)

将代码拆分为单独的方法调用:

File f = getFile();
String text = getFileContents(f);
if(matchesRequirements(text)){
    String newText = performReplacements(text);
    writeFile(newText, f);
}

现在您可以实现这些方法:

private static void writeFile(String newText, File f){
    // TODO implement this method
}

private static String performReplacements(String text){
    // TODO implement this method
    return null;
}

private static boolean matchesRequirements(String text){
    // TODO implement this method
    return false;
}

private static String getFileContents(File f){
    // TODO implement this method
    return null;
}

private static File getFile(){
    // TODO implement this method
    return null;
}

了解您有多远,并在遇到问题时询问具体问题。

答案 1 :(得分:0)

你不能在同一个文件上以交互方式进行(或者至少也许你可以,但它会非常棘手)..你可以

  • 打开输入文件
  • 打开输出文件
  • 表示文件中的每一行
    • 检查您的情况,如果是的话
      • 根据您要修改的内容生成新行
      • 将其保存在输出文件
    • 如果错误
      • 将该行复制到新文件中而不进行修改
  • 关闭两个文件
  • 删除第一个并将第二个重命名为第一个(您可以使用API​​函数轻松完成)

答案 2 :(得分:0)

我使用了RandomAccessFile,它运行正常。