You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发文件对比工具:如何获取文件内容与元数据?COM方案遇阻

关于文件对比工具获取内容与元数据的解决方案

嘿,我来帮你理清这个问题~

首先明确一点:文件内容(你现在用FileStream读取的部分)和文件元数据是两类不同的信息,没法通过一次调用完全获取,但我们可以用.NET原生的类让整个操作变得连贯,不用做割裂的两步操作。下面分情况给你说明:

1. 基础元数据(文件名、修改日期):用FileInfo一步搞定

FileInfo类可以同时帮你获取基础元数据,还能直接打开FileStream读取文件内容,完美衔接你的现有逻辑。示例代码如下:

var fileInfo = new FileInfo(@"C:\YourFile.exe");

// 获取基础元数据
string fileName = fileInfo.Name;
DateTime lastModified = fileInfo.LastWriteTime;

// 读取文件内容(和你现在的FileStream用法一致)
using (var stream = fileInfo.OpenRead())
{
    // 这里写你的文件内容读取逻辑
}

这样你就不用单独再去处理文件路径,一次实例化FileInfo就能搞定基础元数据+内容读取。

2. 版本信息:用FileVersionInfo原生类(无需COM引用)

你提到之前的COM DLL方案不好实现,完全没必要用那个!.NET自带的FileVersionInfo专门用来获取可执行文件(exe、dll)的版本信息,纯原生实现,操作非常简单:

var versionInfo = FileVersionInfo.GetVersionInfo(@"C:\YourFile.exe");

// 获取版本相关元数据
string fileVersion = versionInfo.FileVersion;
string productVersion = versionInfo.ProductVersion;
string companyName = versionInfo.CompanyName; // 还有其他更多属性可选

这个类不需要任何额外引用,直接就能用,比COM方案靠谱多了。

整体流程建议

你不需要严格分“两步”,可以在处理单个文件时:

  • 先实例化FileInfo,获取文件名、修改日期,同时打开FileStream读取内容
  • 再调用FileVersionInfo.GetVersionInfo()获取版本信息
    两个操作都是基于同一个文件路径,逻辑上连贯,代码也简洁。

如果之后你需要处理其他类型的扩展元数据(比如Office文档的作者、图片的拍摄日期),可能需要用到Windows API或者第三方库,但针对你现在提到的版本信息,FileVersionInfo完全足够。

内容的提问来源于stack exchange,提问作者Sylvain B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:56:51