http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read()
文档说"从输入流中读取一些字节并将它们存储到缓冲区数组b中。"。
Java中的InputStream read()如何确定字节数?
答案 0 :(得分:1)
缓冲区数组有一个定义的长度,称之为n
。 read()
方法将在1和n
字节之间读取。除非检测到EOF,否则它将阻塞,直到至少有一个字节可用。
答案 1 :(得分:0)
我认为混淆来自于"阅读"装置
read()
返回InputStream中的下一个字节,如果没有剩余字节,则返回-1。
但是,由于您正在使用的特定InputStream的实现细节,包含正在读取的字节的源可能会读取多个字节,以便告诉您下一个字节:
如果您的InputStream正在读取压缩文件,那么底层源可能必须读入几个字节才能解压缩您的数据,以便返回下一个解压缩的字节。
包含其他输入流(例如new GZIPInputStream(new BufferedInputStream(new FileInputStream(file)));
)的输入流层将使用上面的#1和#2,具体取决于图层。