자바 효율 적 인 빅 데이터 파일 읽 기 - 최 적 화 된 방법
2659 단어 자바
{"id":"C0D962","time":"2015-09-01 23:59:54","lon":"113.534","lat":"22.214",……}
효율 적 인 읽 기 방법:
방법 1:
readLine () 은 전체 시간의 80% 를 차지 하고 Buffered Reader 를 사용 하여 5M 데 이 터 를 읽 을 때마다 IO 를 감소 합 니 다. 예 를 들 어:
BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),5*1024*1024);
업계 에 서 는 IO 자체 가 병목 이 고 IO 데이터 스루풋 을 높이 는 방법 으로 버 프 레 드 리 더 를 사용 하 는 것 도 좋 은 선택 이 라 고 평가 했다.속도 가 가장 빠 른 방법 은 당연히 Mapped Byte Buffer 이지 만 Buffered Reader 에 비해 효과 가 뚜렷 하지 않다.후 자 는 빠 르 지만 빠 르 기 에는 한계 가 있다 는 것 이다.건물 주 는 새로 몇 배로 올 라 갈 수 있다 는 환상 을 품 지 마라.현재 건물 주의 수 요 를 보면 MappedByteBuffer 로 데 이 터 를 읽 는 것 이 가장 좋 은 선택 이다.다 중 스 레 드 (다 중 스 레 드 향상 잠재력 도 크 지 않 음) 를 사용 하지 않 는 다 면 디스크 배열 을 바 꾸 는 것 이 좋 은 선택 이다.네가 만약 아직도 어떻게 된 일 인지 모른다 면, 디스크 모델 을 베 끼 고, 인터넷 에 가서 검색 해 보면, 디스크 의 읽 기와 쓰기 속 도 를 알 수 있 을 것 이다.
자세 한 설명:
2G 이상 의 텍스트 파일 을 한 줄 씩 읽 을 때 다음 코드 를 사용 하 는 것 을 추천 합 니 다.
void largeFileIO(String inputFile, String outputFile) {
try {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(inputFile)));
BufferedReader in = new BufferedReader (new InputStreamReader (bis, "utf - 8"), 10 * 1024 * 1024); / / 10M 캐 시
FileWriter fw = new FileWriter(outputFile);
while (in.ready()) {
String line = in.readLine();
fw.append(line + " ");
}
in.close();
fw.flush();
fw.close();
} catch (IOException ex) {
ex.printStackTrace();
}
jdk 자체 가 큰 파일 의 읽 기와 쓰 기 를 지원 합 니 다.
인터넷 의 글 은 기본적으로 두 가지 로 나 뉘 는데 하 나 는 BufferedReader 류 를 사용 하여 초대형 파일 을 읽 고 쓰 는 것 이다. 다른 하 나 는 RandomAccessFile 류 를 사용 하여 읽 는 것 이다. 비 교 를 통 해 마지막 으로 앞의 방식 으로 초대형 파일 을 읽 었 다. 다음은 관련 코드 이 고 사실은 매우 간단 하 다.
-------------------------------------------------------------------
File file = new File(filepath);
BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
BufferedReader reader = new BufferedReader (new InputStreamReader (fis, utf - 8), 5 * 1024 * 1024); / / 5M 버퍼 로 텍스트 파일 읽 기
String line = "";
while((line = reader.readLine()) != null){
//TODO: write your business
}
---------------------------------------------------------------------
코드 를 주의 하 십시오. Buffered Reader 를 예화 할 때 캐 시 를 할당 하 는 인 자 를 추가 하면 됩 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.