FileInputStream を使用してファイルを配列に読み込もうとしましたが、約 800 KB のファイルをメモリに読み込むのに約 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 倍以上高速です。それよりもはるかに。では、なぜこれなのか、このコードをより効率的に (外部ライブラリを使用せずに) 行うことは可能でしょうか?