2013-03-05 50 views
0

我正在製作一個XNA遊戲,它使用了很多(目前約爲2800個)小型資源文件。將它們從一個地方移動到另一個地方已經成爲一個問題,所以我想也許我可以將它們壓縮並將它們自動解壓縮到內存中。我不需要寫作能力,現在只能閱讀。使用內存中的壓縮文件夾

是否有簡單的方法將文件夾解壓縮到內存中,並像訪問磁盤上的常規文件一樣簡單地訪問這些文件?


我一直在讀一些類似的問題,我看到很多人說的操作系統(Windows在我的情況),可以處理的文件緩存比RAM驅動器更好。我現在只想解壓縮和閱讀文件,但將來我可能需要修改或創建新文件,我希望它能夠爲用戶快速無縫地進行。也許我應該採取不同的方法解決我目前的問題,考慮到我未來的目標?

+0

隨時將標籤更改爲更合適 – user1306322 2013-03-05 04:47:48

回答

0

我還沒有親自嘗試過,但如果你想在內存中壓縮/解壓縮,你可以使用MemoryStream並將其傳入庫(例如https://github.com/icsharpcode/SharpZipLib)。你可能需要記住的事情,你是否將瓶頸轉移到另一個瓶頸?

你也可以嘗試類似於HTML中Sprites的方法。您將所有Zip的索引合併到一個索引中,以指向它們所在的文件。然後,將FileStream.Position移動到您正在查找的資源的位置,然後閱讀(需要的數量),然後根據需要執行所需的操作。你需要確保如果你重建任何你重建所有的組合索引等等。那麼你只需要複製1個文件,只是在那個文件裏面有2800個小的興趣點。

+0

與hdd相比,我相信記憶的「瓶頸」是巨大的。我嘗試了一個RAM磁盤,它速度超快,但我需要爲最終用戶部署一些東西。我認爲只要壓縮整個資產文件夾就可以做到這一點,這就是zip的作用。 – user1306322 2013-03-05 05:00:53

+0

您是否可以使用Zip的文件系統功能將所有資源存儲在1個文件中?然後你可以解壓縮到一個內存流 – 2013-03-05 05:04:14

+0

啊,如果這就是你說的話,那麼我猜不是。但是,我需要與內存中的文件?好吧,我會稍後嘗試使用MemoryStream方法。 – user1306322 2013-03-05 05:05:32

相關問題