-1

我怎样才能转换InputStreamReaderInputStream?我有一个InputStream包含一些字符串和字节数据,我想解析它。所以我把我InputStream的 to包装起来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 行并将其删除。谢谢。

4

3 回答 3

0

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

于 2012-04-12T01:45:57.893 回答
-1

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

于 2012-04-12T07:50:10.443 回答
-2

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

于 2012-04-12T01:57:45.087 回答