ファイルを再生する方法によって異なりますが、ファイルをバイトストリームとしてロードすると、ファイルの内容をバイト配列として格納してキャッシュに格納するだけで済みます。
ファイルを再度ロードするときに、キャッシュからバイト配列を取得し、そこから入力ストリームを作成します。
この擬似コードのようなもの:
byte[] cachedFile = cache.get(filename);
if(cachedFile != null) {
cachedFile = loadFile(filename);
cache.put(filename, cachedFile);
}
InputStream stream = new ByteArrayInputStream(cachedFile);
play(stream);
注キャッシュを得る可能性がある場合、これは単にいくつかの基本的なアプローチであることを、あなたは(キャッシュアクセスに同期を追加する必要があり、例外処理、キャッシュ立ち退き戦略だろう大きすぎるなど)
これ以外にも、ファイルをメモリマッピングすると、トレードオフが発生します。再生する前にファイル全体を読み取る必要はなく、再生中にストリームを直接読み取る必要はありません。したがって、あなたはプレーヤーが必要とする部分だけを読むでしょう。これは、ハードディスクのスループットが低下しているため、メモリ内のデータよりもまだ遅いかもしれませんが、特定の時間に特定の量のデータしか必要としないので目立つことさえありません。この方法では、キャッシュが不要になり、メモリの必要量を減らすことができます。