求DataInputStream的长度问题

liangfeilonglfl 2011-01-18 08:39:48
请问怎样求DataInputStream输入流的长度呢?
1.我用了available()方法,但是DataInputStream默认调用父类FilterInputStream的available()方法,这个方法也是调用outputStream的available()方法,返回的是0;

2.我用了skip()方法判断实际跳过的字节数来判断长度,但是DataInputStream不支持mark,不能返回。
...全文
728 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangfeilonglfl 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 youlovexia 的回复:]

用readLine()方法获取每一行,
然后用length获取长度,再把每一行累加
[/Quote]
在java socket环境中使用这个方法会阻塞,请问在socket环境下怎么求得长度?
liangfeilonglfl 2011-01-18
  • 打赏
  • 举报
回复
补充一下,读取长度是在java socket环境下的,使用readLine()读取的话,会阻塞!
dracularking 2011-01-18
  • 打赏
  • 举报
回复
available方法貌似只是一个估计值,而且是在流非block的状态下,可读或可被跳过的字节数
qybao 2011-01-18
  • 打赏
  • 举报
回复
byte[] data = new byte[1024];
int size=0, len=0;
while ((len=your_dataInputStream.read(data)) != -1) {
size += len;
}
ljybasically 2011-01-18
  • 打赏
  • 举报
回复
应该是找一个中间的数据结构存放流里的数据,然后再判断长度,直接判断流可能不太容易吧
Jlins 2011-01-18
  • 打赏
  • 举报
回复
全部读取到一个char数组中,然后判断char数组的有效长度()
YOULOVEXIA 2011-01-18
  • 打赏
  • 举报
回复
用readLine()方法获取每一行,
然后用length获取长度,再把每一行累加
qybao 2011-01-18
  • 打赏
  • 举报
回复
readLine()遇到(回车)换行符才结束,所以输入传输方要保证这个字符的输入,可以通过BufferedWriter的newLine方法

62,627

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧