使用前导标题数据编写文档有哪些最佳实践?

时间:2010-09-14 23:33:29

标签: .net design-patterns file-io

我知道这可能是一个开放式的问题,但我会采取最好的答案并将其合并在此作为参考。

我正在研究一套使用C#来阅读和编写Mobipocket files(又名Kindle电子书)的工具,当涉及到编写新文件时,我遇到了一个设计问题。底层文件格式以包含所有以下“数据块”的偏移/大小信息的标头开始。这给我留下了以下两个选项:

  1. 在开始写入文件之前,预先收集文件数据(块)的所有。这可能意味着大量文档内容存在于内存中,但其优点是允许我在单个仅向前传递中编写文件。

  2. 在标题中写入占位符数据,然后是未知的预先文件数据,然后搜索到标题并修复之前的偏移/大小数据该文件已关闭。这似乎更复杂,但具有允许文档内容在生成时流式传输的优势,可能会减少内存占用。

  3. 可能还有其他设计,我很乐意听到。我目前倾向于#1,因为我没有预料到特别大的文档,我认为编程模型可能更容易处理。如果您对这些设计中的任何一个(或其他建议的建议)有任何积极或消极的经历,请告诉我!

1 个答案:

答案 0 :(得分:0)

我会选择稍微复杂的第二种设计。它不需要太多的努力,并且如果有人决定在几年之后再向它发送一个1000GB的文件,它将确保你的代码仍能顺利运行。

我也很想知道可能会推荐其他方法。