因此我们有许多具有自定义文件格式的文件。然后处理这些文件以基于该内容生成新文件。例如,考虑处理.zip文件。
正在按顺序读取文件并根据内容创建一些内容。
例如,按顺序阅读可能会产生以下结果:
值得注意的几点:
目前,我将结果内容写入内存中List<byte>;
,然后将结果写入文件。这并不理想,因为这意味着整个结果文件被加载到内存中。
我做了一些检查并发现了C#中的MemoryMapping,乍一看似乎是一个好主意但是从我所见过的1)它需要事先知道文件长度和2)它没有支持用于在指定索引处插入字节 - 同时将任何现有内容推送到相邻字节。
我还在考虑将数据的比特(作为块)存储,例如每1MB的文件内容在处理时作为单独的文件存储。但是由于写入的随机访问性质以及可能跨越文件的整个长度,我认为在打开/关闭文件和重新读取数据方面会有很多文件I / O.
您对如何有效地执行此操作有任何想法吗?