以前用VB6时是这样读文件类型的File.type,但是现在C#的File和FileInfo缺读不出文件类型?读出来的样子应该是
“JPEG 图像”
“数据库文件”
“文本文档”
“HTML Document” 也就是在Windows操作系统中,资源管理器[查看]用详细显示,所看到的类型是一致的。
“JPEG 图像”
“数据库文件”
“文本文档”
“HTML Document” 也就是在Windows操作系统中,资源管理器[查看]用详细显示,所看到的类型是一致的。
FileInfo.Extension就行了
string path = @"C:\mydir.old\";
string extension;extension = Path.GetExtension(fileName);
Console.WriteLine("GetExtension('{0}') returns '{1}'",
fileName, extension);extension = Path.GetExtension(path);
Console.WriteLine("GetExtension('{0}') returns '{1}'",
path, extension);
.htm找到默认值htmlfile,根据htmlfile找到HTML Document
HKEY_CLASSES_ROOT\.htm
HKEY_CLASSES_ROOT\htmlfile
你在MSDN上查一下就知道哦,在SYSTEM.IO.PATH类里
string desc = (string)Registry.ClassesRoot.OpenSubKey(ext).GetValue(null);
string typeinfo = (string)Registry.ClassesRoot.OpenSubKey(desc).GetValue(null);
Console.WriteLine(typeinfo);
返回SHFILEINFO中的szTypeName 即是了.
不提供源代码了,对你有好处的.附加说明:
[StructLayout(LayoutKind.Sequential)]
internal struct SHFILEINFO
{
internal IntPtr hIcon;
internal IntPtr iIcon;
internal uint dwAttributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string szDisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
public string szTypeName;
}; SHGFI_ICON = 0x000000100,
SHGFI_DISPLAYNAME = 0x000000200,
SHGFI_TYPENAME = 0x000000400,
SHGFI_ATTRIBUTES = 0x000000800,
SHGFI_ICONLOCATION = 0x000001000,
SHGFI_EXETYPE = 0x000002000,
SHGFI_SYSICONINDEX = 0x000004000,
SHGFI_LINKOVERLAY = 0x000008000,
SHGFI_SELECTED = 0x000010000,
SHGFI_ATTR_SPECIFIED = 0x000020000,
SHGFI_LARGEICON = 0x000000000,
SHGFI_SMALLICON = 0x000000001,
SHGFI_OPENICON = 0x000000002,
SHGFI_SHELLICONSIZE = 0x000000004,
SHGFI_PIDL = 0x000000008,
SHGFI_USEFILEATTRIBUTES = 0x000000010
if (ext != "")
{
bool descExists = false;
RegistryKey extKey = Registry.ClassesRoot.OpenSubKey(ext);
if (extKey != null)
{
desc = extKey.GetValue(null) as string;
if (desc != null)
{
RegistryKey descKey = Registry.ClassesRoot.OpenSubKey(desc);
if (descKey != null)
{
typeinfo = descKey.GetValue(null) as string;
descExists = true;
}
}
}
if (!descExists)
{
typeinfo = ext.Substring(1).ToUpper() + " File";
}
}
return typeinfo;