同时读取两个文本文件-java

我有两种不同语言的文本文件,它们是逐行对齐的。 即textfile1中的第一行应该等于textfile2中的第一行,依此类推。

有没有办法同时逐行读取这两个文件?

下面是文件应该如何显示的示例,假设每个文件的行数大约为1,000,000。

textfile1:

This is a the first line in English This is a the 2nd line in English This is a the third line in English 

textfile2:

 C'est la première ligne en Français C'est la deuxième ligne en Français C'est la troisième ligne en Français 

期望的输出

 This is a the first line in English\tC'est la première ligne en Français This is a the 2nd line in English\tC'est la deuxième ligne en Français This is a the third line in English\tC'est la troisième ligne en Français 

目前,我可以使用它,但在RAM中保存几百万行会杀死我的机器。

 String english = "/home/path-to-file/english"; String french = "/home/path-to-file/french"; BufferedReader enBr = new BufferedReader(new FileReader(english)); BufferedReader frBr = new BufferedReader(new FileReader(french)); ArrayList enFile = new ArrayList(); while ((line = enBr.readLine()) != null) { enFile.add(line); } int index = 0; while ((line = frBr.readLine()) != null) { String enSentence = enFile.get(index); System.out.println(line + "\t" + enSentence); index++; } 

将调用nextLine放在同一循环中的两个读取器上:

 String english = "/home/path-to-file/english"; String french = "/home/path-to-file/french"; BufferedReader enBr = new BufferedReader(new FileReader(english)); BufferedReader frBr = new BufferedReader(new FileReader(french)); while (true) { String partOne = enBr.readLine(); String partTwo = frBr.readLine(); if (partOne == null || partTwo == null) break; System.out.println(partOne + "\t" + partTwo); } 

我就是这样做的:

 List strings = new ArrayList(); BufferedReader enBr = ... BufferedReader frBr = ... String english = ""; String french = ""; while (((english = enBr.readline()) != null) && ((french = frBr.readline) != null)) { strings.add(english + "\t" + french); }