使用arraylist,Java在文件中搜索和替换

时间:2011-12-14 17:30:50

标签: java arrays search replace

我编写了以下部分代码,但我无法将arraylist与搜索和替换绑定 所以我的csv文件如下所示 1/1/1; 7/6/1 1/1/2; 7/7/1

我想在文件1.cfg中搜索1/1/1并将其更改为7/6/1并将1/1/2更改为7/7/1,然后再进行此操作。

提前谢谢大家

现在只在新文件中打印旧文件的最后一行

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class ChangeConfiguration {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args)
    {
         try{
              // Open the file that is the first 
              // command line parameter
              FileInputStream degistirilecek = new FileInputStream("c:/Config_Changer.csv");
              FileInputStream config = new FileInputStream("c:/1.cfg");
              // Get the object of DataInputStream
              DataInputStream in = new DataInputStream(config);
              DataInputStream degistir = new DataInputStream(degistirilecek);
              BufferedReader br = new BufferedReader(new InputStreamReader(in));
              BufferedReader brdegis = new BufferedReader(new InputStreamReader(degistir));  
              List<Object> arrayLines = new ArrayList<Object>();  
              Object contents;
            while ((contents = brdegis.readLine()) != null)  
              {  
              arrayLines.add(contents);  
              }  
              System.out.println(arrayLines + "\n");  
              String strLine;
              //Read File Line By Line
              while ((strLine = br.readLine()) != null)   {
                 //Couldn't modify this part error is here :(
                  BufferedWriter out = new BufferedWriter(new FileWriter("c:/1_new.cfg"));
                    out.write(strLine);
                    out.close(); 
              }
                      in.close();
              degistir.close();
                }catch (Exception e){//Catch exception if any
              System.err.println("Error: " + e.getMessage());
              }
              }
}

2 个答案:

答案 0 :(得分:2)

您在声明时打开文件进行阅读:

BufferedReader br = new BufferedReader(new InputStreamReader(in));

如果您知道整个文件适合内存,我建议您执行以下操作:

  • 打开文件,将内存中的内容读成一个巨大的字符串,然后关闭文件。
  • 一次性将你的替换物应用于巨型琴弦。
  • 打开文件并写入(例如使用BufferedWriter)巨型字符串的内容,然后关闭文件。

作为旁注,您发布的代码将无法编译。您收到的回复质量与所提问题的质量相关。始终在问题中添加SCCE,以增加获得问题准确答案的机会。

答案 1 :(得分:0)

你能详细说明该计划的目的吗?

如果是文件中的简单内容替换。

然后只需读取一行并将其存储在一个字符串中。然后使用string replace方法替换字符串中的文本。

例如:

newStrog = oldString.replace(oldVlue,NEWVALUE);