2010-12-31 6 views
1

나는 서버에서 바이트의 청크를 얻고 있으며 이전 청크를 덮어 쓰지 않고 파일에 쓸 필요가있다. 내가 어떻게 할 수 있니? 내가 이런 식으로 일을 오전 ..파일을 덮어 쓰지 않고 바이트를 쓰는 방법

private void createMapFile(String fileName, byte mapBytes[]) throws IOException 
    {  
     File filePath = new File(Environment.getExternalStorageDirectory()+"/map/"+fileName); 

     PrintWriter pw = new PrintWriter(new FileOutputStream(filePath, true)); 
     pw.print(mapBytes); 
     pw.flush(); 
     pw.close(); } 

내이 방법은 파일 이름과 인수로 바이트 덩어리를합니다. 언제든지 서버에서 새 청크를 얻습니다.이 메서드는 호출됩니다. 이 방법으로 모든 청크 파일에 쓸 수 없습니다.

도움이 될 것입니다. 감사

답변

4

PrintWriter는 파일에 텍스트를 쓰는 데 사용되며 원시 바이트를 쓰는 것을 지원하지 않습니다. FileOutputStream은 필요한 모든 것을 제공합니다.

FileOutputStream os = new FileOutputStream(filePath, true); 
os.write(mapBytes); 
os.close(); 
1

사용 pw.append(bytes); 또는

사용 FileOutputStream에이 추가 생성자 FileOutputStream(File file, boolean append)

생성자 방법을 사용하여 아마 파일로 약간 더 효율적 끝까지 모든 시간을 추구 할 필요없이 추가 모드에서 열 수 있습니다 . 그러나, 나는 그것이 확실하지 않으므로 자신의 환경에서 테스트가 중요하다면 테스트해야합니다.

또한, kgiannakakis의 조언을 무시하지 마십시오. 그는 PrintWriter가 이진 데이터가 아닌 텍스트를 기대한다는 것이 맞습니다.

관련 문제