BufferedInputStream到ByteArrayOutputStream非常慢

D4y*_*D4y 6 java bytearray

我的问题与下面的链接非常相​​似:

PDF到字节数组,反之亦然

主要的区别是我试图通过包含Binary而不是文件的ServerSocket来解释Socket连接.这按预期工作.

但是,我遇到的问题是这个过程需要相当长的时间来读入内存,大约1分30秒,500字节(虽然每个流的大小会有很大的变化)

这是我的代码:

BufferedInputStream input = new BufferedInputStream(theSocket.getInputStream());
byte[] buffer = new byte[8192];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();

while ((bytesRead = input.read(buffer)) != -1)
{
    output.write(buffer, 0, bytesRead);
}

byte[] outputBytes = output.toByteArray();

//Continue ... and eventually close inputstream
Run Code Online (Sandbox Code Playgroud)

如果我在终端内的while循环中记录它的进度,它似乎很快就记录了所有字节(即到达流的末尾),但是在打开while循环并继续之前似乎暂停了一段时间.

希望有道理.

Jon*_*eet 5

好吧,你正在阅读,直到套接字关闭,基本上 - 这read将是什么时候将返回-1.

所以我的猜测是,连接的另一端在关闭之前将其保持打开状态90秒.解决这个问题,你将解决你的问题.