C# 从没有扩展名的文件获取扩展名

C# 从没有扩展名的文件获取扩展名,c#,.net,winforms,C#,.net,Winforms,是否有任何方法可以获取(实际上是猜测!)扩展文件? 在我的程序中,我在某个地方得到了一个文件,应用程序对其进行分析,以了解它是ZIP还是MOV 我发现了,但它不支持MOV和ZIP 更新: 通过创建包含文件签名前8位的文本文件。 下面的代码,我可以确定每个没有扩展名的文件。 佩奇可能是一个很好的参考 string rootPath = $"{name}"; using (FileStream fsSource = new FileStream(rootPath, F

是否有任何方法可以获取(实际上是猜测!)扩展文件? 在我的程序中,我在某个地方得到了一个文件,应用程序对其进行分析,以了解它是ZIP还是MOV

我发现了,但它不支持MOV和ZIP

更新:

通过创建包含文件签名前8位的文本文件。 下面的代码,我可以确定每个没有扩展名的文件。 佩奇可能是一个很好的参考

        string rootPath = $"{name}";
        using (FileStream fsSource = new FileStream(rootPath, FileMode.Open, FileAccess.Read))
        {
            byte[] fileBytes = new byte[8]; // the number of bytes you want to read
            fsSource.Read(fileBytes, 0, 8);

            /*
             zip = 50-4B-03-04-0A-00-00-00
             mov = 00-00-00-20-66-74-79-70
             html = 3C-21-64-6F-63-74-79-70
             rar 1 = 52-61-72-21-1A-07
             rar 5 = 52-61-72-21-1A-07 

            */
            string filestring = BitConverter.ToString(fileBytes);
            // string filestring = Encoding.UTF8.GetString(fileBytes); 
            File.WriteAllText($"{DownloadPath}\\filestring.txt", filestring);
        }

只要读取文件的头部分(文件开头的几个字节),就可以检测其格式

例如,有关于mov文件的信息

您可以像下面的代码一样读取文件头(这里我假设读取4个字节就足够了,但是,如果您需要更多/更少的字节来确定格式,您可以随意更改):


仔细阅读那些文件格式。然后打开文件并检查结构以确定类型。文件扩展名只是一些文本。你真的是指文件类型吗?@puropoix是的,正是我的意思@Adriani6实际上这并不少见,尤其是Unix中的文件或与Unix密切相关的程序中的文件。文件不必有扩展名。您可以检查其标题以确定其类型。ZIP和MOV等格式定义良好,您可以在互联网上找到它们的标题信息。谢谢,实际上它是您的!我只想修复它的错误!关于
4字母
扩展名文件呢?@GonzaloLorieto,我们这里不是在讨论扩展名,我们打开文件并读取文件的4(在这里)第一个字节,然后确定文件扩展名是mov、zip还是其他错误。很好的解决方案,我的apologies@GonzaloLorieto不客气。
 using (FileStream fsSource = new FileStream(pathSource, FileMode.Open, FileAccess.Read))
 {
     byte[] bytes = new byte[4]; // the number of bytes you want to read
     fsSource.Read(bytes, 0, 4);
 }