我正在构建一个接口,其主要功能是充当文件重命名工具(此处的基础任务是根据描述其内容的规则手动对文件夹中的每个文件进行分类)。到目前为止,我已经为文件实现了自定义文件浏览器和预览窗口。
我现在必须找到一种方法来通知用户文件是否已经重命名(这将显示在文件资源管理器的listView中)。程序应该能够读取以及在重命名文件时修改该状态。我根本不知道保存这类信息的最佳方法是什么,因为我还没有完全习惯C#的潜力。我的初始解决方案涉及文本文件,但同样,我不知道是否应该只有一个文本文件用于所有文件和文件夹,或者只是每个文件夹的文本文件,指示其包含项目的状态。
一位同事建议我使用Excel电子表格,然后只导入与我的查询相对应的一行或多列。我试图找到更直接的数据结构,但我再次对一些外界意见感到更舒服。
那么,您认为存储此类数据的最佳方式是什么?
PS:有数千个文件,所有这些文件都是TIFF图像,位于我完全访问的远程服务器上。
答案 0 :(得分:2)
我不确定您要求的是什么,但如果您只想保留一些文件的信息,例如姓名,日期,大小等,您可以使用FileInfo课程。它被标记为可序列化,因此您可以通过调用XmlSerializer的序列化方法轻松地在xml文件中编写它们的数组。
答案 1 :(得分:2)
我不确定我理解你的问题。但我收集的内容基本上是存储有关每个文件的元数据。如果是这种情况,我可以提出两点建议。
将元数据存储在一个简单的XML文件中。如果您有多个文件夹,每个文件夹一个XML文件,XML文件可能是一个隐藏文件。然后,当您导航到该文件夹并将数据呈现给用户时,您的自定义应用程序可以加载该文件。
如果您使用的是NTFS,并且您知道情况总是如此,则可以将文件的元数据存储在文件流中。这不是.NET流,而是可以存储和移动每个文件的额外数据流,而不会影响实际的文件内容。关于这一点的好处是,无论你在哪里移动文件,元数据都将随文件移动,只要它仍然在NTFS上
以下是有关文件流的更多信息 http://msdn.microsoft.com/en-us/library/aa364404(VS.85).aspx
答案 2 :(得分:1)
您可以创建面向对象的结构,然后将根对象序列化为二进制文件或XML文件。你可以用这种方式表示任何结构,所以你不必为
而烦恼我不知道是否所有文件和文件夹只有一个文本文件,或者每个文件夹只有一个文本文件,表明其所包含项目的状态。
设计问题。您只需要一个文件,其中包含您需要存储的所有元数据。如果你想要更快的打开/保存和更小的尺寸,请使用二进制文件,如果你想要其他人可以打开并查看并可能编写自己的软件的东西,你可以使用XML。
关于如何做到这一点有很多变化,但是为了让你从这里开始是一篇来自快速谷歌的文章: http://www.codeproject.com/KB/cs/objserial.aspx