最佳答案
我试图通过使用 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多倍。远不止这些。那么,为什么会这样,是否有可能使这段代码更加高效(不使用任何外部库) ?