【问题标题】:Copy file contents without copying file properties复制文件内容而不复制文件属性
【发布时间】:2015-07-14 21:07:32
【问题描述】:

在您继续阅读之前,我在How to remove special characters from file Metadata c# 提出了类似的问题。这个问题并不特定于任何文件类型(图像、视频、音频、文本、word、excel。)。我不是在问如何获取文件的扩展属性以及如何设置它们。

是否可以在不复制文件扩展属性的情况下将文件内容从一个文件复制到另一个文件。

请查看下图,了解我所说的扩展属性。

注意:忽略突出显示。这里没有任何意义。

我想要文件内容,但我不想获得标题、主题、评级、标签、评论、作者等(没有属性,无论文件类型如何。)。

谢谢。

【问题讨论】:

  • 那些可以自己嵌入到图像中。你试过一个字节的字节复制吗?
  • 这取决于文件的类型。一些文件在文件本身中保存额外的数据,而另一些文件使用备用文件流来保存数据。对于在文件中保存额外信息的文件,没有通用的解决方案。
  • @DStanley 我不同意你的另一篇文章是重复的,这个问题是专门询问清除文件元数据而不是如何首先复制文件。如果您使用副本中说明的方法复制 MP3 文件,您仍然会显示所有 ID3 扩展信息。
  • @ScottChamberlain 够公平的。

标签: c# asp.net file


【解决方案1】:

您可能会发现在文件复制后修改扩展属性更容易。看看File类,它有设置修改日期等方法。

对于 Title 等,您必须使用 COM,shell32.dll 将允许您这样做:

http://www.codeproject.com/cs/files/detailedfileinfo.asp

要更改这些属性,您必须使用另一个 COM 组件。看起来 dsofile.dll 会为您执行此操作。上面有一篇 MS 知识库文章here

你也可以看看TagLib#虽然我不知道它是否具有通用工作的能力。

【讨论】:

  • 我使用 Shell32.dll, COM 来获取文件扩展属性。它运行良好,但无法将属性写回文件或修改它们。如果我错了,请纠正我。
  • 我已经使用 dsofile.dll 进行了检查,但它不适用于所有文件类型(甚至不适用于 .docx 文件)。 TagLib 确实提供了常用的文件格式,但并不涵盖所有类型。
  • dosfile.dll 最后修改时间为 05-01-2007 15:22。现在已经6岁多了。应该有一些新的方法,这就是我想要找到的。
  • MetaData 至少从 2001 年的 Windows XP 开始就已经存在,因此为了保持兼容性,我不希望出现任何新方法。根据这篇文章,它似乎是一个 NTFS 功能:filemeta.codeplex.com,它可能会提供进一步的见解。有源代码可以帮助你。
  • 感谢您的解决方案,很高兴与您讨论。我最终使用 TagLib# 处理媒体文件。
猜你喜欢
  • 2010-11-06
  • 2015-04-02
  • 2011-01-16
  • 2012-12-12
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
相关资源
最近更新 更多