如何实现ObjectOutputStream::read函数的返回值

问题描述 投票:0回答:1

使用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。

java sockets io stream
1个回答
0
投票

read
最多返回1024的原因是因为
ObjectInputStream
内部使用1024的缓冲区。
read
不需要返回请求的字节数。

但是,正如我在评论中也提到的那样,从您在问题中显示的代码片段来看,您可能根本不应该使用

ObjectInputStream
。您正在传输使用
read
获得的二进制数据,这意味着您此时没有使用 Java 序列化。也许您应该改用普通的输入和输出流。

© www.soinside.com 2019 - 2024. All rights reserved.