c# - 将文本文件的多个修订存储到单个文件的最佳方法

标签 c#

我正在开发一个 C# 应用程序,它需要将给定报告文件的所有连续修订存储到单个项目文件中:每次(纯文本)报告文件更改时,都应附加新版本的内容到项目文件,以及一些元数据。其他要求:

  • 报告文件的每个版本为 100 kB 到 1 MB。理论上,最大修改次数是没有限制的,但实际上应该小于 1000。
  • 为简单起见,我想避免计算报告修订之间的差异 - 只需在每次更改时将整个报告存储到项目文件中即可。
  • 项目文件应该被压缩——它不需要是一个文本文件
  • 从应用程序中检索给定版本的报告应该很容易

我怎样才能有效地实现它?我应该创建自定义二进制文件、考虑使用数据库还是其他想法?

非常感谢,盖伊。

最佳答案

简单的工作流程有什么问题?

  1. 解压缩文件
  2. 附加标题和新报告
  3. Gzip 项目文件

Gzip 是一种标准格式,因此很容易访问。后续报告可能不会有太大变化,因此您将获得很好的压缩率。要归档每份报告,只需打开文件并扫描标题即可。 (如果扫描不起作用,还要将元数据镜像到 SQLite 数据库中,并确保将偏移量包含到项目文件中,以便您可以快速找到正确的位置。)

如果您的要求很灵活(例如,“应追加”部分)并且您只是想要一些东西来跟踪文件的过去版本,revision control system将轻松完成您需要的所有工作。

关于c# - 将文本文件的多个修订存储到单个文件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3276675/

相关文章:

c# - 在 C# 中使用 cmd 将文件从一个目录复制到另一个目录

c# - 错误 "Unable to evaluate the expression"

c# - 为什么 System.String 表现得像一个值类型? (如何写string这样的值类型类?)

c# - DialogDebuggerVisualizer : COMException: Object is in a zombie state

c# - 如何迭代列表框选定的项目并获取 ValueMember 和 Display Member

c# - 在 wpf 中单击鼠标时如何控制较低的 zindex?

c# - 如何在 C# 中获取另一个网站页面的 JavaScript 函数的结果?

c# - 可空 bool 下拉列表的编辑器模板未呈现

c# - 如何使用 .NET 检测 Windows 64 位平台?

c# - 路由室内认识步骤