나는이 사용하는 데이터의 일부 금액을 가진 파일을 작성하려고 해요 :자바에서 큰 텍스트 파일을 작성하는 가장 효율적인 방법은 무엇입니까?
public static <T extends SomeClass> void writeFile(String buffer, Class<T> clazz, int fileNumber) {
String fileType = ".txt";
File file = new File(clazz.getName()+fileNumber+fileType);
PrintWriter printWriter = null;
try {
FileWriter writer = new FileWriter(file);
printWriter = new PrintWriter(writer);
printWriter.print(buffer);//error occurs here
printWriter.flush();
printWriter.close();
System.out.println("created file: "+file.getName());
} catch (IOException e) {
e.printStackTrace();
} finally{
if(printWriter!=null){
printWriter.flush();
printWriter.close();
}
}
System.out.println("Done!");
}
버퍼 문자열의 데이터 + -6mb를 포함하고 내가 코드를 실행하면 내가 정확히 java.lang.OutOfMemoryError와를 얻을 수 버퍼에.
Java VM에 -Xmx 명령 줄 옵션을 사용하여 적절한 메모리를 할당 했습니까? –
단일 호출 대신 작은 블록으로 버퍼를 쓰려고 했습니까? – millimoose
덧붙여 말하자면, 필자는 PrintWriter.write가 메모리를 사용하는 이유는 전체 문자열을 바이트 배열로 인코딩 한 다음 쓰기 때문이라고 생각합니다. –