我们有一个简单的二进制文件格式用于在我们的应用程序(C# .NET Windows 应用程序)中缓存数据。该格式基本上是一个简短的指示对象类型,后跟对象 id 的 guid(字符串),然后是任何对象特定数据(字符串 int 等等)。我们希望能够在同一个文件(> 10000)中存储许多对象,但在某些情况下只能按需加载。我们的解决方案是在文件中保留对象位置的索引 - 所以当我们开始编写新对象时,我们会在文件流中记录对象开始的位置。当我们要加载这个对象时,我们使用这个索引位置来加载相关数据。这工作正常。
但是,如果我们要压缩文件,这种方法仍然可行吗?我对压缩是如何工作的,特别是我们计划使用的 GZipStream 类 (System.IO.Compression) 不太感兴趣。据我了解,此类不支持 Seeking 或 Position 属性。是否仍然可以使用底层 FileStream 的 Seek 和 Position (我猜不是)?基本上,是否有可能拥有一个我们可以选择性地从中加载的压缩文件,如果可以,我们该怎么做?
谢谢,
史蒂夫