2014-08-27 2 views
-5

Я два файла сказатьКак сравнить и объединить два текстовых файла?

 
abc   
cdg 
sfh 
drt 
fgh 

и другой файл

 
ahj 
yuo 
jkl 
uio 
abc 
cdg 

Я хочу сравнить эти два файла и получить выходной файл как

 
abc 
cdg 
sfh 
drt 
fgh 
ahj 
yuo 
jkl 
uio 

это мой код

public static void MergeFiles(final File priviousModifiedFilesList, final File currentModifiedFilesList, 
     final File ModifiedFilesList) { 
    FileWriter fstream = null; 
    out = null; 
    try { 
     fstream = new FileWriter(ModifiedFilesList, true); 
     out = new BufferedWriter(fstream); 
    } 
    catch (IOException e1) { 
     e1.printStackTrace(); 
    } 

    System.out.println("merging: " + priviousModifiedFilesList + "\n"); 
    System.out.println("merging: " + currentModifiedFilesList); 
    FileInputStream fis1; 
    FileInputStream fis2; 
    try { 
     fis1 = new FileInputStream(priviousModifiedFilesList); 
     BufferedReader bufferedReader1 = new BufferedReader(new InputStreamReader(fis1)); 

     fis2 = new FileInputStream(currentModifiedFilesList); 
     BufferedReader bufferedReader2 = new BufferedReader(new InputStreamReader(fis2)); 

     String Line1; 
     String Line2; 

     while (((Line1 = bufferedReader1.readLine()) != null)) { 

     while ((Line2 = bufferedReader2.readLine()) != null) { 

      if (Line1.equals(Line2)) { 
      out.write(Line1); 
      } 

      out.write(Line2); 
      out.newLine(); 
     } 
     out.write(Line1); 
     } 
     bufferedReader1.close(); 
     bufferedReader2.close(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
    out.close(); 
} 

записывает все строки из первого файла и когда строки соответствуют ему, останавливается.

+3

И где проблема? что ты уже испробовал? – Jens

+0

Stack Overflow предназначен для вопросов программирования кода, который вы пишете. В настоящее время вы написали набор требований, которые более подходят для веб-сайта для найма подрядчика. Пожалуйста, покажите нам, что вы пытались и где вы застряли. При этом даже ваши требования неясны - кажется, вы хотите удалить дубликаты из объединенного файла? –

+0

Возможный дубликат [конкатенирование нескольких файлов .txt в java] (http://stackoverflow.com/questions/10675450/concatenating-a-number-of-txt-files-in-java) –

ответ

0

Это легко:

  • Прочитайте вам первую строку файла построчно (вы можете использовать Scanner для этого).
  • Для каждой строки напишите его в выходной файл (для этого вы можете использовать PrintWriter).
  • Также сохраните строку в HashSet.

  • Прочитайте вторую строку за строкой.
  • Для каждой строки проверьте, находится ли линия в HashSet.
  • Если это не так, напишите его в выходной файл.

  • Закройте файлы.
+0

Это не будет работать с большими файлами. –

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