2012-04-12 9 views
-1

InputStreamReaderInputStreamに変換するにはどうすればよいですか?私はいくつかの文字列とバイトのデータを含むInputStreamを持っており、それを解析したい。だから私はInputStreamBufferedReaderにラップします。それから私はそれから3行を読んだ。その後、残りのデータ(バイト)をそのまま取得したいと考えています。しかし、私がそれを得ることを試みれば何も起こらない。 コードスニペット:InputStreamReaderをInputStreamに変換する

BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8")); 

       String endOfData = br.readLine(); 
       String contentDisposition = br.readLine(); 
       String contentType = br.readLine();  

       file = new File(filename); 
       if(file.exists()) file.delete(); 
       file.createNewFile(); 
       FileOutputStream fos = new FileOutputStream(file);     

       byte[] data = new byte[8192];  
       int len = 0;  

       while (-1 != (len = is.read(data)))  
       {     
        fos.write(data, 0, len); 
        Log.e("len", len+""); 
       }  
fos.flush(); 
fos.close(); 
is.close(); 

ファイルが空です。 InputStream私はラップしない場合、それは正常に動作しますが、私は3行を読んで、それを削除する必要があります。おかげさまで

答えて

0

テキストとバイトデータを混在させたい場合は、OutputStream.writeUTFを使用してこれらの3行を書き出す必要があります。この方法で、1つのInputStreamが必要なすべてのデータを取得できます。

-2

特に、バッファリングされたリーダー/ストリームをミックスにスローすると、バイトと文字の入力を正しく混合するのはかなり難しいです。私はあなたがどちらかを選択して(必要に応じてあなたのバイトを文字列に変換し、エンコーディングに気をつけてください)、ZipOutputStreamで全体を包むことで、異なる内容の複数の論理 "ファイル"を持つことができます。

-1

commons-ioのReaderInputStreamを見てください。少し重いですが、BufferedReaderをラップして入力ストリームとして再度読み取ることができます。

関連する問題