加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:49:47 所属栏目:Java 来源:网络整理
导读:我有两种不同语言的文本文件,它们是逐行对齐的.即textfile1中的第一行应该等于textfile2中的第一行,依此类推. 有没有办法同时逐行读取这两个文件? 下面是文件应该如何显示的示例,假设每个文件的行数大约为1,000,000. textfile1: This is a the first line
我有两种不同语言的文本文件,它们是逐行对齐的.即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 EnglishtC'est la première ligne en Fran?ais
This is a the 2nd line in EnglishtC'est la deuxième ligne en Fran?ais
This is a the third line in EnglishtC'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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读