它取決於您如何播放文件,但假設您將文件作爲字節流加載,您只需將文件內容作爲字節數組存儲並放入緩存。
當再次加載文件時,您將從緩存中檢索字節數組並從中創建輸入流。
事情是這樣的僞代碼:
byte[] cachedFile = cache.get(filename);
if(cachedFile != null) {
cachedFile = loadFile(filename);
cache.put(filename, cachedFile);
}
InputStream stream = new ByteArrayInputStream(cachedFile);
play(stream);
請注意,這只是一些基本的方法,你需要同步添加到緩存中訪問,異常處理,高速緩存逐出策略(如果緩存可能會太大)等
除此之外,你可能會考慮內存映射文件提供了一個折衷:你不必在播放它之前讀取整個文件,而是直接在播放時讀取流。因此你只能閱讀玩家需要的部分。由於硬盤吞吐量較低,這可能仍然比內存中的數據要慢,但這可能甚至不明顯,因爲您在給定時間只需要文件中的一定數量的數據。採用這種方法,您不需要緩存,並且可以降低內存需求。