如何在java中将DataInput转换为DataInputStream? 我需要知道DataInput的大小。
答案 0 :(得分:1)
因为根据定义,流确实没有开始或结束,因此没有万无一知的方法可以知道有多少可用,所以你只需要从固定大小的块中读取流。听起来好像你用普通的.read()而不是readFully()会更好:
DataInputStream dis = new DataInputStream(...);
byte[] buf = new byte[1024];
int lastRead = 0;
do {
lastRead = dis.read(buf);
//do something with 'buf' here
} while (lastRead > 0);
答案 1 :(得分:0)
当您想知道要读取多少字节时,您会遇到困难。最简单的解决方案是将其转换为ByteArrayInputStream
并使用它的available()方法来了解可用于读取的字节数。
以下示例为我工作
DataInput in = (...);
ByteArrayInputStream bis = (ByteArrayInputStream) in;
byte[] buffer = new byte[bis.available()];
in.readFully(buffer);
//use buffer as your wish