我应该如何存储用户指定的一组文件?

Posted

技术标签:

【中文标题】我应该如何存储用户指定的一组文件?【英文标题】:How should I store a group of files a user specifies? 【发布时间】:2011-05-13 04:03:35 【问题描述】:

我正在编写一个新的 c# 桌面应用程序,它允许用户选择一组应用程序需要记住的图像文件。我还有一些其他设置要保存,我将与它们指定的文件一起保存为 xml 文件。我正在考虑尝试将文件一起保存在 zip/cab 类型文件或类似文件中,有点像 .war 或 .docx 文件。这样当用户回来时,他们可以选择他们的文件并拥有他们需要的一切。这样用户将无法(轻松)删除所需的文件。缺点是文件可能会变得相当大,特别是因为它可能包含图像文件。

但是,然后我在考虑 Visual Studio 如何将内容存储在他们的项目文件 (.cproj) 中,该文件是指向文件夹中特定文件的指针。这似乎也是一个很好的解决方案。走这条路,我必须添加更多错误检查以确保用户没有删除文件。我不确定这是否会导致压缩/解压缩文件所需的代码。

关于哪种方式更好的任何指示?这两种方法有什么优缺点吗?

【问题讨论】:

【参考方案1】:

这个问题没有正确答案,实际上取决于真正的业务需求是什么。要记住的最重要的事情之一是,如果您使用对文件位置的引用,则可以在应用程序在线和离线时在应用程序之外修改文件。如果这是一个导入功能,如果您需要保留文件的快照,我会使用文件引用,我会将它们放入压缩文件中。

【讨论】:

【参考方案2】:

Hmmmm....当您正在查看 XML 文件时,我会考虑将图像数据保存为 XML 文件中的 CDATA 部分,从中可以重新创建它们(并且图像不会得到“丢失”或“移动”)。

虽然这会导致一个相当大的 XML 文件,但您始终可以在它超过一定大小时对其进行压缩(达到一定大小后,压缩它不会有任何回报,解压缩它所花费的时间可能是比加载未压缩版本所需的时间长)。

将它包含在 XML 文件中也消除了使用数据库进行存储的需要 - 尽管使用 SQLCompact 也可能是一个可行的选择(您可以只将图像存储在数据库中)。

【讨论】:

从两个解决方案到四个。我喜欢这个网站,所以可能有人比我聪明。没有考虑将图像数据保存在 xml 中或使用数据库。我假设 sqlcompact 可以存储博客?我可能不得不尝试 xml 方法。我已经从 sharepoint 和 infopath 处理了一点。 @xecaps,没有 SQLCompact 不存储 blob,但它有更好的东西:图像数据类型(或者您可以使用 varbinary(max))。再加上它的占用空间小、易于部署和超低成本(免费),它成为了一个非常现实的选择。查看this link 以获取有关可用数据类型的更多信息。 我先试试xml的想法。我在想我可能会尝试编写一个接口,使其成为以后可以更改存储类型的地方。

以上是关于我应该如何存储用户指定的一组文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SQLite 数据库中的用户位置检索特定范围内的一组位置

如何执行存储过程

我应该如何将 Windows 用户 ID 存储在数据库中?

单击锚点时如何存储cookie

我应该在哪里为非漫游用户存储机器范围的应用程序设置?

MySQL存储过程简介