java将InputStream的内容写OutputStream
2021-01-11项目经验
java将InputStream的内容写OutputStream
一、概述
今天,我发现我找不到使用InputStream将
内容写入OutputStream
的任何简单方法。显然,字节缓冲区代码并不难编写,但是我怀疑我只是缺少了一些可以使我的生活更轻松的东西(并且代码更清晰)。
那么,给定InputStream
in
和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
从Java 9开始,InputStream
提供了一种transferTo
带有以下签名的方法:
public long transferTo(OutputStream out) throws IOException
如文档所述,transferTo
将:
从此输入流中读取所有字节,然后按读取顺序将字节写入给定的输出流。返回时,此输入流将在流的末尾。此方法不会关闭任何一个流。
此方法可能会无限期阻止从输入流读取或写入输出流。输入和/或输出流异步关闭或线程在传输期间中断的情况下的行为是高度特定于输入和输出流的,因此未指定
因此,为了编写Java内容的InputStream
一个OutputStream
,你可以这样写:
input.transferTo(output);
很赞哦! ()