2010-12-31 20 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)

コンストラクタメソッドを使用して、おそらくファイルとして、もう少し効率的には最後まで毎回追求することなく、追加モードで開くことができています。しかし、私はそれがわからないので、それがあなたにとって重要であるなら、自分の環境でテストするべきです。

また、キキアンナカキスのアドバイスを無視しないでください。彼は、PrintWriterがバイナリデータではなくテキストを期待していることは間違いありません。

関連する問題