gpt4 book ai didi

java - 将输入流分成两个流

转载 作者:行者123 更新时间:2023-11-29 05:52:50 25 4
gpt4 key购买 nike

我需要合并到 inpustream,其中一个只有 string,另一个是 avi 文件。我可以很容易地将其中两个组合起来,如下所示:

InputStream is = new SequenceInputStream(stringStream, aviStream);

但是,当涉及到分别获取字符串和 avi 时,我失败了。 avi 文件与其第一个大小不匹配,不知何故我丢失了一些大小。

我可以使用 delimiter 使用 Scanner 读取 is,但在那种情况下,avi 流将是 String 我会丢失信息。

知道如何分离输入流吗?我想读回我的字符串,我应该将流的其余部分作为输入流。

编辑:我正在考虑将流转换为字节数组,然后根据分隔符将数组分成两部分。然后是第二部分,即 avi 部分,我可以将其转换回输入流。但这似乎很麻烦。

最佳答案

Scanner 仅适用于文本数据,不适用于二进制数据。二进制数据,例如AVI 可以包含每个字节值,这意味着您可以使用不会出现在数据中的定界符。

您可以通过以下方式将文本与原始数据结合起来。

DataOutputStream dos = new DataOutputStream(...);
dos.writeUTF(string);
dos.writeInt(bytes.length);
dos.write(bytes);

要反转这个过程,您可以将 DataInputStream 与 readUTF、readInt 和 readFully() 结合使用

关于java - 将输入流分成两个流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13270859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com