使用Java Socket传输文件时,我设置了
byte[] BUFFER = new byte[1024 * 8]
,并使用objectInputStream.read(BUFFER, 0, BUFFER.length)
来接收文件流,但是objectInputStream.read(BUFFER, 0, BUFFER.length)
的返回值始终是1024,为什么会是1024
而不是1024 * 8
。
BUFFER长度为1024 * 8
但len是1024。
read
最多返回1024的原因是因为ObjectInputStream
内部使用1024的缓冲区。read
不需要返回请求的字节数。
但是,正如我在评论中也提到的那样,从您在问题中显示的代码片段来看,您可能根本不应该使用
ObjectInputStream
。您正在传输使用 read
获得的二进制数据,这意味着您此时没有使用 Java 序列化。也许您应该改用普通的输入和输出流。