我需要结合inpustreams,其中只有string
而另一个是avi
文件。我可以轻松地将其中两个组合起来,如下所示:
InputStream is = new SequenceInputStream(stringStream,aviStream);
但是,当涉及到单独使用字符串和avi时,我失败了。 avi文件与其第一个大小不匹配,不知怎的,我正在丢失一些大小。
我可以使用is
使用Scanner
阅读delimiter
,但在这种情况下,avi流将为String
,我将丢失信息。
知道如何分离输入流?我想读回我的字符串,我应该将其余的流作为inpustream。
编辑:我正在考虑将流转换为字节数组,然后根据分隔符将数组分成两部分。然后第二部分,即avi,我可以将其转换回输入流。但这似乎很麻烦。
答案 0 :(得分:3)
扫描仪仅用于文本数据,而不是二进制文件。二进制数据,例如AVI可以包含每个字节值,这意味着没有可以使用的分隔符,这些分隔符不会出现在数据中。
您可以按以下方式将文本与原始数据合并。
DataOutputStream dos = new DataOutputStream(...);
dos.writeUTF(string);
dos.writeInt(bytes.length);
dos.write(bytes);
反转过程你可以使用带有readUTF,readInt和readFully()的DataInputStream