如何调整Java InputStream大小

时间:2017-06-06 14:11:06

标签: java linux sockets tcp

我正在CentOS7和Jetty9环境中开发文件上传功能。一切都运行正常,但我注意到我的输入流中的数据非常小。我在while循环中每次读取后都计算了字节数。

  while ((bytesCount = inStream.read(byteArray)) != -1) {
      ...
      logger.trace("bytecount: " + bytesCount);
      ...
   }

日志:

 ... bytecount: 3844
 ... bytecount: 4052
 ... bytecount: 44
 ... bytecount: 4052
   .....
   .....

我的TCP套接字缓冲区大小:

 cat /proc/sys/net/ipv4/tcp_rmem
 4096   87380   6291456

我的Jetty9服务器是否减少了数据,因此输入流每次读取呼叫只接收大约4KB的数据?还是我需要调整我的Linux TCP Socket?

感谢。

1 个答案:

答案 0 :(得分:1)

byteArray的大小不会决定最小读取大小。 Java具有底层流,因此当它们达到byteArray的最大值时,您将获得字节。

如果你想强制它,你可以调整你的Linux TCP套接字。

另一方面,如果您不想在java中使用数组大小​​,可以使用ByteArrayOutputStream toByteArray()方法,这将返回适当大小的数组,或者谷歌番石榴的byte[] bytes = ByteStreams.toByteArray(inputStream);