문제:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!