2011-12-14 2 views
1

Я написал нижнюю часть кода, но я не смог связать arraylist с поиском и заменить , поэтому мой файл csv выглядит как ниже: 1/1/1; 7/6/1 1/1/2; 7/7/1Поиск и замена в файле с использованием arraylist, Java

Я хочу найти файл 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

Что такое 'function replace (arrayName, replaceTo, replaceWith)'? Это не будет компилироваться на Java. –

+0

Ну, прежде всего, если вы хотите изменить файл, вам нужно будет написать ему. И вы не можете писать в «Reader» или «InputStream», вам нужен «Writer» или «OutputStream». –

+0

opps yes that function part is my problem Я не мог написать эту часть для java, которая собирает строки из массива и заменяет его. – ahmet

ответ

2

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

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

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

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

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

+0

да, я тоже так думал, чтобы открыть и закрепить файл (кстати, файл около 500 кб) изменить строки, а затем записать как новый файл, но я не добавил эту часть сейчас. Теперь я пытаюсь найти замену из массива, но не могу управлять им. Я должен также обрезать массив правильно? – ahmet

+0

Вам не хватает точки, все изменения, которые вы делаете в массиве, не будут отображаться в файле. Вы можете изменить все, что хотите, в массив, и файл будет таким же. –

+0

himm ok, так что я получаю его сейчас :) – ahmet

0

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

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

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

например:

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

+0

, значит, вы должны изменить весь буферный файл в строку? Как я могу это сделать ? – ahmet

Смежные вопросы