2012-04-12 57 views
-1

如何将InputStreamReader转换为InputStream?我有一个InputStream其中包含一些字符串和字节数据,我想解析它。所以我把我的InputStream换成BufferedReader。然后我读了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行,这样一个单一的InputStream将能够检索你需要的所有数据。

-2

要正确混合字节和字符输入是非常困难的,特别是一旦你开始将缓冲的阅读器/流投入混合。我建议你选择一个并坚持下去(根据需要将字节转换为字符串;注意编码!)或将整个事物包装在ZipOutputStream中,以便可以有多个具有不同内容的逻辑“文件”。

-1

看看commons-io的ReaderInputStream:这有点笨拙,但你可以用它包装BufferedReader并再次将它作为输入流读取。

相关问题