Java 我如何知道数据输入大小?

Java 我如何知道数据输入大小?,java,Java,我如何知道数据输入的大小?在将所有数据读入字节数组之前,我需要先设置大小。DataInput是一个用于读取流数据的接口,也就是说,当长度可能事先未知时。其思想是在循环中将数据块读入字节数组,直到到达末尾,由EOFEException指示。如果要发送一部分数据,最简单的方法是在数据输出流中首先发送它。否则,您必须假设您要读取所有数据,直到流结束(并且您不能发送任何其他内容)您无法知道数据的大小。请参阅下面的链接,不要介意不同的标题。请阅读所有的注释,我完全同意DataInput很糟糕-它不是一个流

我如何知道数据输入的大小?在将所有数据读入字节数组之前,我需要先设置大小。

DataInput是一个用于读取流数据的接口,也就是说,当长度可能事先未知时。其思想是在循环中将数据块读入字节数组,直到到达末尾,由EOFEException指示。

如果要发送一部分数据,最简单的方法是在数据输出流中首先发送它。否则,您必须假设您要读取所有数据,直到流结束(并且您不能发送任何其他内容)

您无法知道数据的大小。请参阅下面的链接,不要介意不同的标题。请阅读所有的注释,我完全同意DataInput很糟糕-它不是一个流,那么为什么界面没有定义长度/大小方法呢?arg.or read()返回-1,具体取决于您调用的方法。在可写接口中,他们将该方法定义为公共void readFields(DataInput In)。我必须使用它。如果您使用的是DataInput,则所有字段都有一个定义的或固定的宽度。在这种情况下,您可以阅读消息以了解它的长度(或者您不需要知道),对于Readfull,您必须假设您可以通过假设消息中的固定宽度或其他信息来确定长度。否则,您必须假设您可以读取流中剩余的所有数据,您不能使用ReadFull来执行此操作。(如mazaneicha所建议)
public void readFields(DataInput in) throws IOException{
    //How can I set up the byteArray size here?
    //DataInput does not have available() or length() method.
    byte[] videoByteArray = new byte[size];
    in.readFully(videoByteArray);
}