将Java InputStream的内容写入OutputStream的简单方法

今天,我很惊讶地发现我找不到InputStream使用OutputStreamJava 将an 的内容写入an的任何简单方法。显然,字节缓冲区代码并不难编写,但是我怀疑我只是缺少了一些可以使我的生活更轻松的东西(并且代码更清晰)。

那么,给定an InputStream inan OutputStream out,是否有更简单的方法编写以下内容?

byte[] buffer = new byte[1024];

int len = in.read(buffer);

while (len != -1) {

out.write(buffer, 0, len);

len = in.read(buffer);

}

回答:

从Java 9开始,InputStream提供了一种transferTo带有以下签名的方法:

public long transferTo(OutputStream out) throws IOException

如文档所述,transferTo将:

从此输入流中读取所有字节,然后按读取顺序将字节写入给定的输出流。返回时,此输入流将在流的末尾。此方法不会关闭任何一个流。

此方法可能会无限期阻止从输入流读取或写入输出流。输入和/或输出流异步关闭或线程在传输期间中断的情况下的行为是特定于输入和输出流的,因此未指定

因此,为了编写Java内容的InputStream一个OutputStream,你可以这样写:

input.transferTo(output);

以上是 将Java InputStream的内容写入OutputStream的简单方法 的全部内容, 来源链接: utcz.com/qa/435233.html

回到顶部