将InputStreamReader转换为InputStream

时间:2012-04-12 01:29:22

标签: java android

如何将InputStreamReader转换为InputStream?我有一个InputStream,其中包含一些字符串和字节数据,我想解析它。所以我将InputStream包裹到BufferedReader。然后我读了3行。之后我想得到其余的数据(字节)。但如果我试图让它没有任何反应。 代码段:

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行并删除它。 谢谢。

3 个答案:

答案 0 :(得分:0)

如果要将文本和字节数据混合在一起,则应使用OutputStream.writeUTF写出这3行,这样一个InputStream就能够检索到您需要的所有数据。

答案 1 :(得分:-1)

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

答案 2 :(得分:-2)

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