请问怎样求DataInputStream输入流的长度呢? 
1.我用了available()方法,但是DataInputStream默认调用父类FilterInputStream的available()方法,这个方法也是调用outputStream的available()方法,返回的是0; 2.我用了skip()方法判断实际跳过的字节数来判断长度,但是DataInputStream不支持,不能返回。 

解决方案 »

  1.   

    用readLine()方法获取每一行,
    然后用length获取长度,再把每一行累加
      

  2.   

    全部读取到一个char数组中,然后判断char数组的有效长度()
      

  3.   

    byte[] data = new byte[1024];
    int size=0, len=0;
    while ((len=your_dataInputStream.read(data)) != -1) {
        size += len;
    }
      

  4.   

    available方法貌似只是一个估计值,而且是在流非block的状态下,可读或可被跳过的字节数
      

  5.   

    补充一下,读取长度是在java socket环境下的,使用readLine()读取的话,会阻塞!
      

  6.   

    在java socket环境中使用这个方法会阻塞,请问在socket环境下怎么求得长度?
      

  7.   

    readLine()遇到(回车)换行符才结束,所以输入传输方要保证这个字符的输入,可以通过BufferedWriter的newLine方法