[英]Read two textfile line by line simultaneously -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<String> enFile = new ArrayList<String>();
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<String> strings = new ArrayList<String>();
BufferedReader enBr = ...
BufferedReader frBr = ...
String english = "";
String french = "";
while (((english = enBr.readline()) != null) && ((french = frBr.readline) != null))
{
strings.add(english + "\t" + french);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.