Java:如何将InputStream管道输出到标准输出?

时间:2010-02-27 01:21:45

标签: java io

有一种简单(因此快速)的方法来实现这一目标吗?基本上只需要一些输入流,可能就像socket.getInputStream(),并让流的缓冲区自动重定向到标准输出?

3 个答案:

答案 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);
}