2014-02-12 7 views
0

60 메가 바이트 대용량 파일을 바이트로 읽으려고 할 때 java.outOfMemory 예외가 발생합니다. 나는 아파치를 시도 I/공유지 [IOUtils.toByteArray (FOS)] 및 O :바이트로 파일을 읽을 때 java.outOfMemory

 File file = new File(f); 
     int size = (int) file.length(); 
     byte[] bytes = new byte[size]; 
     try { 
      BufferedInputStream buf = new BufferedInputStream(new FileInputStream(file)); 
      buf.read(bytes, 0, bytes.length); 
      buf.close(); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return bytes; 

내가 예외없이 [] 바이트 파일을 읽을 수있는 방법을 누군가 생각 했습니까?을

파일을 15MB짜리 조각으로 나누고, 테마에 "헤더"(바이트로, 자체 부품 번호 포함)를 추가하고, 공유하고 싶습니다. "헤더"정보와 함께 다시 공유하려고합니다. 원본 파일을 구성하십시오.

+4

당신이 메모리에 큰 파일을 읽고 그것의 실행을 원하는대로 구성 문자열 라인 like described here로 파일을 읽고 각 라인 &에서 바이트를 얻을 수 String.getBytes() 방법을 사용할 수있다 예상 결과 – thepoosh

+0

60MB 파일은 크지 만 상대적으로 최근 컴퓨터의 한계를 두드리는 데 거의 적합하지 않습니다. 예외를 게시하고 발생한 코드 위의 코드 줄을 가리킬 수 있습니까? –

+1

@JStevenPerry'BufferedReaderStream'이 많은 장치에서 64MB 이하의 제한을 갖는 힙에 만들어 졌다는 것을 어떻게 생각하세요? "최근 컴퓨터"가이 작업과 관련이있는 것은 무엇입니까? – Simon

답변

0

나중에 당신이 같은 소리,

관련 문제