有没有一种简单(因此快速)的方法来完成这个任务?基本上只需要获取一些输入流,可以是类似于socket.getInputStream()的内容,并使流的缓冲区自动重定向到标准输出。
没有简单的方法可以实现此功能,因为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()
InputStream.transferTo
功能。try (InputStream stream = Application.class.getResourceAsStream("/test.txt")) {
stream.transferTo(System.out);
}
您需要一个简单的线程,它从输入流中读取并写入标准输出。确保它能让其他线程运行。
IOUtils.copy()
函数。 - axtavtread(byte)
和write(byte)
做一次系统调用,这非常昂贵。 - Stephen C