【发布时间】:2013-09-07 03:54:56
【问题描述】:
我尝试使用 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 倍以上。远不止于此。那么,为什么会这样,是否有可能使这段代码更高效(不使用任何外部库)?
【问题讨论】:
标签: java file-io inputstream fileinputstream