使用read和read的InputStream(bytearray)

时间:2014-12-30 09:09:26

标签: java inputstream

为什么read()方法在读取字节总数方面有所不同? 例如,

int n = System.in.read();
System.out.println("The total bytes are:"+System.in.available());

在另一个地方我们使用

byte [] in= new byte[30]; 
int n = System.in.read(byte);
System.out.println("The total bytes are:"+System.in.available());

在两种方法中都读到了 Java 这个词

第一种方法的输出是:

the total bytes are 5

第二种方法是:

 the total bytes are 6

这两种方法之间的字节数有什么不同?

2 个答案:

答案 0 :(得分:1)

正如Javadoc所说的available()方法,它:“返回估计可以从此输入流 通过下一次调用此输入流的方法来阻止 。“

未严格定义流确定此计数的确切方式。在System.in的情况下,它可以使用其内部缓冲区中当前可用的字节数,或者它可以将调用委托给可能依赖于实现的基础输入流(例如,通过操作系统)。您唯一可以从返回值确定的是您应该能够安全读取而不会阻塞的字节数。

答案 1 :(得分:0)

System.in.read()它从标准输入流中读取值。

byte [] in= new byte[30]; 
int n = System.in.read(byte); 
  • 它从您的数组中读取值。