> Java > java지도 시간 > 내 BufferedWriter가 모든 데이터를 출력 파일로 플러시하지 않는 이유는 무엇입니까?

내 BufferedWriter가 모든 데이터를 출력 파일로 플러시하지 않는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-18 00:46:10
원래의
150명이 탐색했습니다.

Why Isn't My BufferedWriter Flushing All Data to the Output File?

BufferedWriter가 데이터를 출력 파일로 플러시하지 않음

문제:

Java 프로그램이 CSV 데이터를 SQL 명령으로 변환하려고 시도합니다. 출력 파일에 문제가 있습니다. BufferedWriter에 기록된 모든 데이터가 출력 파일에 나타나는 것은 아닙니다.

세부 정보:

프로그램은 10,000줄이 넘는 CSV 파일을 읽고 SQL 문을 생성하여 데이터를 테이블로. 그러나 출력 파일은 중간에 잘리고 마지막 불완전한 문에는 값의 일부가 누락됩니다.

코드:

// ...
while((line = in.readLine())!= null)
{
    String[] esa = line.split(",");
    sqlstr = "insert into nyccrash values ("+esa[0]+", "+esa[1]+", "+esa[2]+", "+esa[3]+", "+esa[4]+", "+esa[5]+", "+esa[6]+");\n";
    out.write(sqlstr);
}
// ...
로그인 후 복사

해결책:

쓰기 과정에서 출력 버퍼가 플러시되지 않기 때문에 문제가 발생합니다. BufferedWriter의 기본 버퍼 크기는 8192자이며 여러 줄을 담기에 충분합니다. 버퍼가 가득 찬 후에는 버퍼를 수동으로 플러시할 때까지 데이터가 파일에 기록되지 않습니다.

모든 데이터가 출력 파일에 기록되도록 하려면 OutputStream을 명시적으로 닫아야 합니다. 그러면 남은 모든 데이터가 플러시됩니다. 버퍼의 데이터:

out.close();
로그인 후 복사

출력 스트림을 닫으면 프로그램이 종료되기 전에 부분 명령문을 포함한 모든 데이터가 파일로 플러시됩니다.

위 내용은 내 BufferedWriter가 모든 데이터를 출력 파일로 플러시하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿