如何将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行并删除它。
谢谢。
答案 0 :(得分:0)
如果要将文本和字节数据混合在一起,则应使用OutputStream.writeUTF写出这3行,这样一个InputStream就能够检索到您需要的所有数据。
答案 1 :(得分:-1)
看看commons-io的ReaderInputStream
:它有点重,但你可以用它包装BufferedReader并再次将其作为输入流读取。
答案 2 :(得分:-2)
正确混合字节和字符输入非常困难,特别是一旦开始将缓冲的读取器/流投入混合中。我建议您选择一个并坚持使用它(根据需要将字节转换为字符串;关注编码!)或将整个事物包装在ZipOutputStream中,这样您就可以拥有多个具有不同内容的逻辑“文件”。 / p>