请说明read([]字节)的细微差别

问题描述 投票:0回答:1

[当做这样的事情时,您能解释一下吗?

FileInputStream fis1 = new FileInputStream(path1);
FileInputStream fis2 = new FileInputStream(path2);
byte[] array=new byte[fis1.available()+fis2.available()];

如果我想将字节写入数组:

fis2.read(array);
fis1.read(array);

(方法read())会做什么?它将两个流中的所有字节都写入数组还是不写入?如何将字节以什么顺序写入数组?在规范和文档中找不到。

java
1个回答
0
投票

read(byte[] b) method javadoc说:

从此输入流中读取最多read(byte[] b)个字节的数据到一个字节数组中。此方法将阻塞,直到有可用的输入为止。

Returns:读入缓冲区的字节总数,如果由于到达文件末尾而没有更多数据,则返回-1。

这意味着它将“一些”字节读取到数组的开头。

它读取多少字节?该方法返回其读取的字节数。它最多读取数组的整个长度,但是最大数量可能在几千字节范围内。确切的详细信息取决于操作系统和文件系统的实现。

它不会从文件中读取所有字节,并且不能保证字节数组已完全填充。如果调用两次,它将不会两次返回相同的数据。

© www.soinside.com 2019 - 2024. All rights reserved.