위키 백과 사전을 자바에서 URL에서 직접 파싱하려고합니다. ,URL 스트림에서 전체 압축 파일을 읽을 수없는 이유는 무엇입니까?
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 : 위키 덤프 압축 BZIP2 파일로 배포하고 있으며, 내가 그들을 구문 분석을 시도하기 위해 다음과 같은 방법을 사용하고 있습니다 20MB가 넘는 크기입니다. 스트림 라인 별을 인쇄하려고하면, XML의 몇 줄이 실제로 인쇄 된 :
String line = br2.readLine();
while(line != null) {
System.out.println(line);
line = br2.readLine();
}
내가 여기에 놓친 거지 뭔가가 있나요? 필자는 온라인에서 찾은 다른 코드 덩어리에서 구현 된 내용을 거의 한 줄씩 다른 사람이 복사했다고 주장했습니다. 전체 스트림을 읽지 않는 이유는 무엇입니까? 미리 감사드립니다.