有一种简单(因此快速)的方法来实现这一目标吗?基本上只需要一些输入流,可能就像socket.getInputStream(),并让流的缓冲区自动重定向到标准输出?
答案 0 :(得分:12)
没有简单的方法可以做到这一点,因为当InputStream
具有推式风格时,OutputStream
具有拉式界面。您需要某种抽取循环来从InputStream
提取数据并将其推入OutputStream
。像这样的东西(必要时在一个单独的线程中运行):
int size = 0;
byte[] buffer = new byte[1024];
while ((size = in.read(buffer)) != -1) out.write(buffer, 0, size);
它已在Apache Commons IO中实现为IOUtils.copy()
答案 1 :(得分:1)
您需要一个简单的线程,它从输入流中读取并写入标准输出。确保它产生其他线程。
答案 2 :(得分:0)
从 Java 9 开始,您可以使用 InputStream.transferTo
示例
try (InputStream stream = Application.class.getResourceAsStream("/test.txt")) {
stream.transferTo(System.out);
}