vb.net - 如何读取通过 GetFiles 函数找到的文件的文件属性?
问题描述
我正在尝试获取在 GridView 中显示的可执行文件、它们的目录和它们的版本号的集合,如下所示:
Dim dir As New DirectoryInfo("C:\Program Files (x86)\PathExample")
For Each foundFile As FileInfo In dir.GetFiles("*.exe", SearchOption.AllDirectories)
Dim foundFileInfo = FileVersionInfo.GetVersionInfo(foundFile.ToString)
'Dim foundFileInfo = FileVersionInfo.GetVersionInfo(foundFile.Directory.ToString)
DataGridView1.Rows.Add(foundFileInfo, foundFile.Directory, foundFile)
Next foundFile
GridView 将成功显示可执行文件名称,以及它们各自列中的目录,但是,我得到了一个错误:
System.IO.FileNotFoundException:'Console.exe'
Console.exe 实际上是一个现有文件,它能够获取目录和可执行文件名,并将其存储在 GridView 中,只有当我尝试获取文件版本信息时,它才会开始抛出此错误。
我使用了错误的功能吗?我基本上需要能够从这个菜单中读取任何行: FileProperties
我需要能够单独读取每个属性,例如仅获取文件版本、版权信息或上次修改日期等,并将其存储到要放置在 GridView 中的列之一中的变量中。
解决方案
代码有几个问题:
FileVersionInfo.GetVersionInfo()
需要文件的完整路径。不要使用foundFile.ToString
. 相反,使用foundFile.FullName
.foundFile
是一个 FileInfo 对象。您不应将其直接添加到 DataGridView 单元格。而是选择适当的属性。你可能想要foundFile.Name
(或者也许.FullName
)。同样,
foundFileInfo
是类型的对象FileVersionInfo
。您应该使用特定属性在单元格中显示。
假设您需要单元格中的文件描述、目录路径和文件名(分别),您的代码应如下所示:
For Each foundFile As FileInfo In dir.GetFiles("*.exe", SearchOption.AllDirectories)
Dim foundFileInfo = FileVersionInfo.GetVersionInfo(foundFile.FullName)
DataGridView1.Rows.Add(foundFileInfo.FileDescription, foundFile.DirectoryName, foundFile.Name)
Next
您可以使用它foundFileInfo
来获取文件版本、版权等其他信息。请参阅FileVersionInfo 类下的可用属性。
推荐阅读
- react-hooks - 当我使用错误的方式编写 useDebounce 时,我也得到了正确的值??有人知道为什么
- angular - 找出在 Karma 测试期间哪个 Angular 组件发出错误
- python - 带有条件计算的汇总数据框。熊猫
- mysql - MYSQL 中缺少数据库记录
- reactjs - React Ag-grid 加载覆盖道具
- fastapi - FastAPI如何只允许特定IP的端点访问?
- performance - 为什么 Ext JS 网格面板中组的展开/折叠有一个小的延迟?
- node.js - Heroku 使用 .json 文件作为数据库
- python-3.x - 如何在多线程硒线chromedriver python中设置具有身份验证的代理?
- docusignapi - 如何通过 REST 或 SOAP 传输草稿信封