为什么使用 BufferedInputStream 逐字节读取文件的速度比使用 FileInputStream 快?
我尝试使用FileInputStream将文件读入数组,而一个~800KB的文件大约需要3秒钟才能读入内存。然后,我尝试了相同的代码,除了将FileInputStream包装到BufferedInputStream中,大约需要76毫秒。为什么使用 BufferedInputStream 逐字节读取文件的速度要快得多,即使我仍然在逐字节读取它?这是代码(代码的其余部分完全无关紧要)。请注意,这是“快速”代码。如果您想要“慢速”代码,则可以删除BufferedInputStream:
InputStream is = null;
try {
is = new BufferedInputStream(new FileInputStream(file));
int[] fileArr = new int[(int) file.length()];
for (int i = 0, temp = 0; (temp = is.read()) != -1; i++) {
fileArr[i] = temp;
}
BufferedInputStream 的速度提高了 30 倍以上。远不止于此。那么,为什么会这样,是否有可能使此代码更有效率(不使用任何外部库)?