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

时间:2018-08-02 12:57:53

标签: c# .net winforms

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

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

更新

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

        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);
        }

1 个答案:

答案 0 :(得分:5)

只需阅读文件的标题部分(文件开头的几个字节),就可以检测其格式。

例如this page拥有有关mov文件的信息。

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

 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);
 }