我的问题是从一个插座到另一个插座的输入管道。目前,我正在使用此代码:
for(;;)
{
try
{
output2.write(input1.read());
}
catch(Exception err)
{
err.printStackTrace();
}
}
即使这在技术上有效,但还有更快的方法吗?
答案 0 :(得分:0)
您可以使用Google Guava中的ByteStreams#copy(InputStream, OutputStream):
try {
ByteStreams.copy(input1, output2);
} catch (IOException x) {
x.printStackTrace();
}
答案 1 :(得分:0)
不使用任何外部库,并且不知道你有一个OutputStream和一个InputStream,你可以使用这样的东西。
byte[] buf = new byte[ 1024 ];
int read = 0;
while( ( read = in.read( buf ) ) != -1 ) {
out.write( buf, 0, read );
}
这为您提供了块移动的好处,而不是像您发布的代码中那样单字节移动。
如果我们有关于您正在使用的IO流类型的更多信息,可以改进这一点。您可以查看Java.NIO,它可以在文件或套接字的情况下提供更快的块移动。