큰 파일 세트 (각 2-3GB 정도)가 있는데 InputStream
을 사용하여이 파일을 읽고 새 파일로 출력해야합니다.InputStream 파일 및 출력 부분을 읽습니다.
//this is just for example
int size=100;
String src="pathtofile";
OutputStream os = null;
Inputstream is = new FileInputStream(new File(src));
byte[] buffer = new byte[size];
byte[] bufferis = getBytesFromIS(is);
buffer=Arrays.copyOfRange(bufferis,0,buffer.length);
String tempstr=new String(buffer);
byte[] tempBytes=Arrays.copyOfRange(bufferis, buffer.length,is.available());
os = new FileOutputStream(new File(dest));
copy(new ByteArrayInputStream(tempBytes), os); //function writing to file
이 작은 파일이 잘 작동하지만, 큰 파일에 사용할 때, 나는 여전히 OutOfMemoryError
을 받고, -Xmx6114m
을 설정하는 경우에도, OutOfMemoryError
점점 계속.
대신 2GB 데이터를 처리 할 수있는 프린트 라이저를 사용해보십시오 .... – SmashCode
여기에 대한 대답은 놀랍도록 간단 할 수 있습니다 : 전체 파일을 작은 부분 만 필요할 때 읽지 마십시오! 'InputStream'을 사용할 이유가 있습니까? 스트림은 종종 더 다재다능하지만,이 특정 사용 사례는'RandomAccessFile'을 사용하면 훨씬 쉽게 해결할 수 있습니다. – Marco13
'bufferis'를 제거해야합니다. 당신이 할 수있는'int bytesRead = is.read (buffer);' – roby