即可不可以,输入流与输出流建立连接后,接收到一部分数据, 然后换一个输入流接收剩下的数据,理论上支持吗
感觉应该不行,应该不支持
感觉你的问题有问题啊。
输入流和输出流的对应关系中,提供数据的是输入流,接收数据的是输出流。
概念上输入流和输出流不固定,要看实际的数据流向。
实际的代码一对InpuStream和OutputStream中,数据是从InputStream流向OutputStream的,也就是输入流提供数据给输出流。
如果是实际应用,两个不同应用中的两对Stream,第一对的OutputStream将数据传出去之后经过中间其他操作,到第二对时是被第二对的InputStream首先获取的,中间的这些操作你是不需要关心的,就当成系统自动给你new了一个FileInpuStream之类的InputStream就行了。
输入流提供数据,一次性的,只能读一遍,也就是调用各种 `read` 方法读取过得数据不可以重复读取
输入流就像是入水管,数据就是水管中的水,各种read方法就是把水从水管里往外抽,读取完了也就是水抽光了
输出流接收数据,不限制使用次数,只要没有关闭就可以一直使用也就是可以一直调用各种 wirte 方法
输出流就像是出水管,数据是入水管中的水,各种wirte方法就是接收入水管流出来的水,只要出水管没堵死,一个出水管没水了还可以接收其他出水管里的水
不太清楚你的问题是否表述有误,就分情况说吧,下面的输入流指的就是实际的InputStream,输出流就是OutputStream
1.假设你的目的是:只有一个输入流A,有两个输出流B/C,A给B和C各一部分数据
这个是可以实现的,只需要你能确定该在什么地方停止给B数据,达到条件就可以使用C来接收数据了
2.假设你的目的是:有两个输入流A/B,只有一个输出流C,A和B的数据都给C
这个就更容易了,只要依次将A和B中的数据给C就行了
3.假设你的目的就是你问题的字面意思,两个输入流A/B,一个输出流C,先用C接收一部分A的数据,然后用输入流B接收剩下的数据
虽然这个目的很蛋疼,但是也可以实现。将A中剩余的数据使用 read 方法全部存放到一个byte[]中,然后创建一个 ByteArrayInputStream 输入流(作为B)就行了
4.假设你的目的是:这是一个网络应用,网络应用中的输出流A,你的客户端中使用两个输入流B/C各自接收一部分数据
这个目标就无法实现了,除非你自己实现一个网络类,或者是你用额外的输入流D接收全部数据,然后使用3中的方法创建两个ByteArrayInputStream,假装实现了这个需求
以上是我的回答