我试图用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();
}
我在这里缺少什么吗?我从我在网上发现的其他代码块中复制了我的实现,几乎是逐行的,其他人声称已经有效。为什么不读取整个流?提前谢谢。