【发布时间】:2011-12-13 07:07:06
【问题描述】:
我想要一个显示媒体文件的某些文件属性(如果可用)的应用程序,例如(不知道 Windows 中使用的确切英文单词)文件名、长度/持续时间、文件类型(.avi .mp3 等) 我尝试了 taglib 和 windowsapishell 但我没有得到工作结果(参考很好)
ShellFile so = ShellFile.FromFilePath(file);
so.Properties.System.(everythingIwant)
显示了很多我想显示的文件属性,但我无法让它工作 错误示例:
“WindowsFormsApplication2.vshost.exe”(托管 (v4.0.30319)):已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll”,已跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。 程序“[6300] WindowsFormsApplication2.vshost.exe:程序跟踪”已退出,代码为 0 (0x0)。 程序“[6300] WindowsFormsApplication2.vshost.exe: Managed (v4.0.30319)”已退出,代码为 0 (0x0)。
简单的事情
var thing = so.Properties.System.FileName.Description;
Console.WriteLine(thing);
不会工作
我确实知道一些 Java 和 PHP 编程,但我对 C# 完全陌生
特别感谢@marr75 和@errorstacks!
一个后续问题: 我做了这个,它可以工作
class Program
{
static void Main(string[] args)
{
string file = "E:/Dump/Shutter Island.avi";
FileInfo oFileInfo = new FileInfo(file);
Console.WriteLine("My File's Name: \"" + oFileInfo.Name + "\"");
DateTime dtCreationTime = oFileInfo.CreationTime;
Console.WriteLine("Date and Time File Created: " + dtCreationTime.ToString());
Console.WriteLine("myFile Extension: " + oFileInfo.Extension);
Console.WriteLine("myFile total Size: " + oFileInfo.Length.ToString());
Console.WriteLine("myFile filepath: " + oFileInfo.DirectoryName);
Console.WriteLine("My File's Full Name: \"" + oFileInfo.FullName + "\"");
}
}
但我希望它仅在信息存在时才向我提供信息。 我看到了
**Exists** Gets a value indicating whether a file exists. (Overrides FileSystemInfo.Exists.)
但是这个函数怎么用,我猜不像 if(io.ofileinfo.FullName.exist) {Console.Write(io.ofileinfo.fullname);} ?
【问题讨论】:
-
程序似乎运行成功。您提供的消息不是错误消息,只是通常的诊断。您是否忘记输出找到的值?或者您只需要在
Main的最后一行设置一个断点? -
.net System.FileInfo 类可能会提供您需要的许多结果。它不会提供(媒体文件的)持续时间等信息,但您可能会发现从此处开始获取更多基本信息有助于作为工作应用程序的垫脚石。
-
我正在寻找文件属性中的详细信息选项卡,有人可以使用从 ->
FileVersionInfo.GetVersionInfo(path);返回的对象来执行此操作
标签: c# taglib windows-shell windows-api-code-pack getproperties