Поиск и замена в файле с помощью Arraylist, Java - PullRequest
1 голос
/ 14 декабря 2011

Я написал приведенную ниже часть кода, но я не смог связать 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 ]

2 голосов
/ 14 декабря 2011

Вы открываете файл для чтения, когда объявляете:

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

Если вы знаете, что весь файл умещается в памяти, я рекомендую сделать следующее:

  • Открытьфайл и считайте его содержимое в памяти в гигантскую строку, затем закройте файл.
  • Примените замену одним выстрелом к ​​гигантской строке.
  • Откройте файл и напишите (например, используйте BufferedWriter ) вывести содержимое гигантской строки, затем закрыть файл.

В качестве примечания, ваш опубликованный код не будет компилироваться.Качество ответов, которые вы получаете, соотносится с качеством задаваемого вопроса.Всегда включайте в свой вопрос SCCE , чтобы повысить вероятность получения точного ответа на ваш вопрос.

0 голосов
/ 14 декабря 2011

Можете ли вы уточнить цель программы?

если это простая замена содержимого в файле.

затем просто прочитайте строку и сохраните ее в строку. затем используйте метод замены строки для замены текста в строке.

например:

newStrog = oldString.replace (oldVlue, новое_значение);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...