为什么我似乎无法从URL流中读取整个压缩文件?

时间:2017-11-25 20:28:58

标签: java stream inputstream bzip2 wikidata

我试图用Java直接从URL解析维基词典转储。 Wiki转储作为压缩的BZIP2文件分发,我使用以下方法尝试解析它们:

String fileURL = "https://dumps.wikimedia.org/cswiktionary/20171120/cswiktionary-20171120-pages-articles-multistream.xml.bz2";
URL bz2 = new URL(fileURL);
BufferedInputStream bis = new BufferedInputStream(bz2.openStream());
CompressorInputStream input = new CompressorStreamFactory().createCompressorInputStream(bis);
BufferedReader br2 = new BufferedReader(new InputStreamReader(input));
System.out.println(br2.lines().count());

然而,输出的行数仅为36,这只是整个文件的一小部分,因为它的大小超过20MB。尝试逐行打印流,实际上只打印了几行XML:

String line = br2.readLine();
while(line != null) {
  System.out.println(line);
  line = br2.readLine();
}

我在这里缺少什么吗?我从我在网上发现的其他代码块中复制了我的实现,几乎是逐行的,其他人声称已经有效。为什么不读取整个流?提前谢谢。

0 个答案:

没有答案