int  available(),可以从流中读入的有校字节数1

解决方案 »

  1.   

    有那位高人可以讲的详细一点吗?什么是有效字节数啊?如果这个流的数据源是正确的,任何时候都是可以读取它的字节数直到流遇到数据尾的啊?有那位能知道我写的这个例子available方法的含义呢?谢谢了!
      

  2.   

    available() 
    Returns the number of bytes that can be read (or skipped over) from this input stream without blocking by the next caller of a method for this input stream.
      

  3.   

    还有,将   
               try
                  {
                     data=new byte[10];
                     System.in.read(data);
                     int bytes=System.in.available();
                     System.out.println("Can Read Bytes:"+bytes);
                  }
    更改成为
                  try
                  {
                     data=new byte[10];
                     int bytes=System.in.available();
                     System.in.read(data);
                     System.out.println("Can Read Bytes:"+bytes);
                  }
      

  4.   

    首先说声谢谢,但是你这样改写代码有什么含义呢?你没有先将数据读入到InputStream中去,调用available的结果只是为0,在任何情况下都为0.就是从Java文档来看,方法只是返回可读的字节数,还是解释一下为什么程序会出现这样奇怪的现象呢?谢谢各位了哦!解释的好的,马上给分个!
      

  5.   

    其实我觉得这是java设计上的一个BUG,System.in.available()必须在调用一次System.in.read之后才能够起作用,但是他返回的数据是你读了以后仍然没有读进去的数据,比如你的程序
    data=new byte[10]; 
    System.in.read(data);
    int bytes=System.in.available();
    如果输入的数据超过10个字节,System.in.available();
    才能够返回,但是返回的确实剩余的没有读如的字节树。
      

  6.   

    上面这位大虾,你认为这是Java的bug吗?不过我还是不太懂啊,你说available方法返回的是剩余的没有读入的字节数,9个字节的结果为1可以理解,那为什么在9之前为什么一直都是0呢?在9以后又是从1开始递增的呢?有什么更合理的解释吗?