今天我惊讶地发现,我无法找到用Java编写InputStreamOutputStream的内容的简单方法.显然,字节缓冲区代码并不难编写,但我怀疑我只是缺少了一些可以让我的生活更轻松(代码也更清晰)的东西.

那么,给定一个InputStreamin和一个OutputStreamout,有没有更简单的方法来写下面的内容?

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

正如documentation个州一样,transferTo个州将:

从该输入流读取所有字节,并将字节写入

此方法可能会无限期地阻止从

因此,为了将Java InputStream的内容写入到Java OutputStream,您可以编写:

input.transferTo(output);

Java相关问答推荐

收听RDX中用户数据的变化

日食IDE 2024-03在Ubuntu下崩溃,导致hr_err_pid.log

我应该避免在Android中创建类并在运行时编译它们吗?

Java中后期绑定的替代概念

Character::Emoji不支持带数字的字符吗?

SpringBootreact 式Web应用程序的Spring Cloud Configer服务器中的资源控制器损坏

将不受支持的时区UT重写为UTC是否节省?

只需最少的代码更改即可将版本号标记添加到日志(log)

在AVL树的Remove方法中使用NoSuchElementException时遇到问题

更新GWT 2.5.1到2.11.0和sencha GXT 3.1.1到4.1时出现错误

无法了解Java线程所消耗的时间

我正在try 跟踪数组中最大的两个数字

Spring Security不允许加载js

如何将Java文档配置为在指定的项目根目录中生成?

如何在Maven Central上部署?

Bash数组的单引号元素并使用空格连接

";home/runner/work/中没有文件...匹配到[**/pom.xml];Maven项目的构建过程中出现错误

javax.crypto-密码对象-提供者服务是如何工作的?

可以';不要在Intellij IDEA中使用最新的Java版本(JDK 21)

Java-Apache BufferedHttpEntity 在发送请求时加载整个文件