gpt4 book ai didi

c# - 将元数据存储在文件 : Any standard approach on modern Windows? 之外

转载 作者:可可西里 更新时间:2023-11-01 10:07:32 25 4
gpt4 key购买 nike

我的 C# app将文件从远程文档管理系统同步到文件系统。

文档管理系统具有元数据(上次审核日期、 secret 、作者...),它与每个文件相关联但不存储在每个文件中。
文件可以是任何东西(bmp、xwd、pdf、未知二进制文件)

我想让这些元数据在本地 Windows 文件系统上可见。
但我无法在每个文件中存储元数据。例如,更改文件的保密性不得修改文件的校验和。

存储此元数据的最佳方式是什么?

我听说过 NTFS extended file attributes ,它适用于我的场景吗? This question about setting extended file properties所有答案都在谈论修改文件本身,我必须避免这种情况。

如果没有标准解决方案,那么我会将元数据存储在本地 SQLite 数据库中。但我真的更愿意使用标准解决方案,以便其他应用程序(资源管理器、图库应用程序等)可以显示/修改他们理解的属性(如“作者”)

最佳答案

Alternate data streams是 NTFS 鲜为人知的功能之一。页面引述:

C:\test>echo "ADS" > test.txt:hidden.txt

C:\test>dir
Volume in drive C has no label.
Volume Serial Number is B889-75DB

Directory of C:>test

10/22/2003 11:22 AM

. 10/22/2003 11:22 AM
.. 10/22/2003 11:22 AM 0 test.txt

C:\test> notepad test.txt:hidden.txt

This will open the file in notepad and allow you to edit it and save it.

它类似于 Macintosh 资源分支,即它允许将任意数据与文件相关联,而不是文件本身的一部分。资源管理器默认不理解它,但你可以写一个 column handler

编辑

可以使用 OLE document properties 保存一些元数据(例如作者和标题) .不过,我不知道它是否会修改文件本身:

private void button1_Click(object sender, EventArgs e)
{
//This is the PDF file we want to update.
string filename = @"c:\temp\MyFile.pdf";
//Create the OleDocumentProperties object.
DSOFile.OleDocumentProperties dso = new DSOFile.OleDocumentProperties();
//Open the file for writing if we can. If not we will get an exception.
dso.Open(filename, false,

DSOFile.dsoFileOpenOptions.dsoOptionOpenReadOnlyIfNoWriteAccess);
//Set the summary properties that you want.
dso.SummaryProperties.Title = "This is the Title";
dso.SummaryProperties.Subject = "This is the Subject";
dso.SummaryProperties.Company = "RTDev";
dso.SummaryProperties.Author = "Ron T.";
//Save the Summary information.
dso.Save();
//Close the file.
dso.Close(false);
}

关于c# - 将元数据存储在文件 : Any standard approach on modern Windows? 之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13172129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com