我正在编写一个新的 c# 桌面应用程序,该应用程序将允许用户选择应用程序需要记住的一组图像文件。我还有一些其他设置要保存,我将保存为xml文件以及它们指定的文件。我正在考虑尝试将文件一起保存在zip/cab类型文件或类似的东西中,有点像.war或.docx文件。这样,当用户回来时,他们可以选择他们的文件并拥有他们需要的一切。这样用户将无法(轻松)删除所需的文件。缺点是文件可能会变得相当大,特别是因为它可能包含图像文件。
但是,后来我想到了Visual Studio如何将内容存储在他们的项目文件(.cproj)中,这是指向文件夹中特定文件的指针。这似乎也是一个很好的解决方案。走这条路,我必须添加更多的错误检查,以确保用户没有删除文件。我不确定这是否会解决压缩/解压缩文件所需的代码。
任何关于哪种方式会更好的指示?这两种方法有什么优点/缺点吗?
这个问题没有正确的答案,实际上取决于真正的业务需求是什么。 要记住的最重要的事情之一是,如果您使用对文件位置的引用,则可以在应用程序联机和脱机时在应用程序外部修改文件。 如果这是一个导入功能,如果您需要保留文件的快照,我会使用文件引用,我会将它们放在压缩文件中。
嗯....无论如何,当您正在考虑拥有XML文件时,我会考虑将图像数据另存为XML文件中的CDATA部分,从中可以重新创建它们(并且图像不会"丢失"或"移动")。
虽然这可能会导致一个相当大的 XML 文件,但一旦它超过一定大小,您始终可以压缩它(达到一定大小,压缩它不会有回报,解压缩它所需的时间可能比加载未压缩版本所需的时间更长)。
将其包含在 XML 文件中也消除了使用数据库进行存储的需要 - 尽管使用 SQLCompact 也可能是一个可行的选择(您可以将图像存储在数据库中)。