2013-09-27 5 views
-3

Первый текстовый файл A.txt;Объединение двух текстовых файлов по строкам с использованием java

asdfghjklqw12345 qwe3456789
asdfghjklqw12345 qwe3456789

Второй текстовый файл B.txt;

Запись 1: Отклонено - Ошибка на таблице AUTHORIZATION_TBL, столбец AUTH_DATE.ORA-01843: недействительный месяц | | Запись 2: Отклонено - Ошибка в таблице AUTHORIZATION_TBL, столбец AUTH_DATE.ORA-01843: недействительный месяц |

Третий текстовый файл C.txt;

asdfghjklqw12345 qwe3456789 Запись 1: Отклонено - Ошибка на таблице AUTHORIZATION_TBL, столбец AUTH_DATE.ORA-01843: недействительный месяц |

asdfghjklqw12345 qwe3456789 | Запись 2: отклонено - ошибка на таблице AUTHORIZATION_TBL, столбец AUTH_DATE.ORA-01843: недействительный месяц |

для описанных выше ситуаций, когда я хочу, чтобы объединить две строки из двух различных текстовых файлов в один код line.My ниже

List<FileInputStream> inputs = new ArrayList<FileInputStream>(); 
    File file1 = new File("C:/Users/dell/Desktop/Test/input1.txt"); 
    File file2 = new File("C:/Users/dell/Desktop/Test/Test.txt"); 

    FileInputStream fis1; 
    FileInputStream fis2; 

    try { 
     fis1 = new FileInputStream(file1); 
     fis2= new FileInputStream(file2); 

     inputs.add(fis1); 
     inputs.add(fis2); 

    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    int total = (int) (file1.length() + file2.length()); 
    System.out.println("total length is " + total); 

    SequenceInputStream sis = new               SequenceInputStream(Collections.enumeration(inputs)); 
    try { 
     System.out.println("SequenceInputStream.available() = "+ sis.available()); 

     byte[] merge = new byte[total]; 

     int soFar = 0; 
     do { 
      soFar += sis.read(merge,total - soFar, soFar); 
     } while (soFar != total); 
     DataOutputStream dos = new DataOutputStream(new  FileOutputStream("C:/Users/dell/Desktop/Test/C.txt")); 
     soFar = 0; 
     dos.write(merge, 0, merge.length); 
     dos.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

То, что вы пытаетесь сделать? –

+1

вы что-то пробовали? если да, пожалуйста, покажи нам! – clamp

+1

И что вы пытались достичь? – Kayz

ответ

0

Вы можете посмотреть на BufferedReader и BufferedWriter. Покажите нам, что вы пробовали, и где вы застряли, и мы рады предоставить вам больше помощи.

1

Вот код:

public class MergeText { 
    public static void main(String[] args) throws IOException{ 
     String output=""; 
     try(Scanner sc1=new Scanner((new File("A.txt"))); 
     Scanner sc2=new Scanner((new File("B.txt")))){ 

     while(sc1.hasNext() || sc2.hasNext()){ 
      output+=sc1.next() +" "+ sc2.next(); 
      output+="\n"; 
     } 

     } 

     try(PrintWriter pw=new PrintWriter(new File("C.txt"))){ 
     pw.write(output); 
     }   
    } 
} 
+0

Зачем голосовать? Можете ли вы упомянуть причину? – Masudul

+0

Я не дубликат, но ваше время должно иметь && вместо ||. Не говоря уже о StringBuilder/StringBuffer вместо + = для строк. Так что, у него были причины. Достаточно оснований! –

+0

Спасибо. за хорошее предложение. – Masudul

0

Объединение всех текстовый файл из папки может быть сделано следующим образом:

public static void main(String[] args) throws IOException { 
     ArrayList<String> list = new ArrayList<String>(); 

     //Reading data files 
     try { 

      File folder = new File("path/inputFolder"); 
      File[] listOfFiles = folder.listFiles(); 

      for (int i = 0; i < listOfFiles.length; i++) { 
       File file = listOfFiles[i]; 
       if (file.isFile() && file.getName().endsWith(".txt")) { 
        BufferedReader t = new BufferedReader (new FileReader (file)); 
        String s = null; 
        while ((s = t.readLine()) != null) {       
         list.add(s);   
        } 
        t.close(); 
       } 
      } 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 

     //Writing merged data file 
     BufferedWriter writer=null; 
     writer = new BufferedWriter(new FileWriter("data.output/merged-output.txt")); 
     String listWord;    
     for (int i = 0; i< list.size(); i++) 
     { 
      listWord = list.get(i); 
      writer.write(listWord); 
      writer.write("\n"); 
     } 
     System.out.println("complited"); 
     writer.flush(); 
     writer.close();  
    } 
Смежные вопросы