冰楓論壇

 找回密碼
 立即註冊
ads_sugarbook
搜索
查看: 1421|回覆: 0
打印 上一主題 下一主題

[心得] [C#] 判斷檔案類型(非副檔名判斷)

[複製鏈接]

612

主題

0

好友

762

積分

高級贊助會員

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

UID
390967
帖子
1169
主題
612
精華
0
積分
762
楓幣
6632
威望
305
存款
4100
贊助金額
1800
推廣
0
GP
1598
閱讀權限
150
在線時間
141 小時
註冊時間
2023-5-18
最後登入
2024-4-20

2023年紀念勳章 太陽勳章 神手勳章 高級客戶 VIP會員 私服達人 懶人勳章 幼兒勳章 音樂勳章 屁孩勳章 貢獻王 性別(女) 性別(男) 積分勳章 發帖達人 2023端午節紀念勳章 富豪勳章 富可敵國 2023中秋節紀念勳章 解說達人 論壇粉絲 2023聖誕節紀念勳章

跳轉到指定樓層
1
發表於 2023-6-1 13:01:55 |只看該作者 |倒序瀏覽
本帖最後由 whitefox 於 2023-6-1 13:17 編輯

可能一般判斷檔案類型時直覺以副檔名為主
但實際真正判斷此檔案屬於哪一類是用檔案開頭的資訊來判斷

在維基百科上可以查到各種類型檔案的檔頭規範,關鍵字是『File Signatures』
List of file signatures

以下用C#程式來實現區分的功能
  1. public static void CheckTrueFileName()
  2. {
  3.     string path =@"C:\Test.doc";
  4.     System.IO.FileStream fs = newSystem.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read);
  5.     System.IO.BinaryReader r = newSystem.IO.BinaryReader(fs);

  6.     string bx =" ";
  7.     byte buffer;
  8.     try
  9.     {
  10.         buffer = r.ReadByte();
  11.         bx      = buffer.ToString();
  12.         buffer = r.ReadByte();
  13.         bx    += buffer.ToString();
  14.     }
  15.     catch(Exception ex)
  16.     {
  17.         Console.WriteLine(ex.Message);
  18.     }
  19.     r.Close();
  20.     fs.Close();

  21.     // 真實的檔案型別
  22.     Console.WriteLine(bx);

  23.     //檔名,包括格式
  24.     Console.WriteLine(System.IO.Path.GetFileName(path));

  25.     //檔名,不包括格式
  26.     Console.WriteLine(System.IO.Path.GetFileNameWithoutExtension(path));

  27.     //檔案格式
  28.     Console.WriteLine(System.IO.Path.GetExtension(path));
  29.     Console.ReadLine();
  30. }
複製代碼
以下列舉幾種類型的檔頭資訊
  1. public enum FileExtension
  2. {
  3.     JPG =255216,
  4.     GIF =7173,
  5.     BMP =6677,
  6.     PNG =13780,
  7.     COM =7790,
  8.     EXE =7790,
  9.     DLL =7790,
  10.     RAR =8297,
  11.     ZIP =8075,
  12.     XML =6063,
  13.     HTML =6033,
  14.     ASPX =239187,
  15.     CS =117115,
  16.     JS =119105,
  17.     TXT =210187,
  18.     SQL =255254,
  19.     BAT =64101,
  20.     BTSEED =10056,
  21.     RDP =255254,
  22.     PSD =5666,
  23.     PDF =3780,
  24.     CHM =7384,
  25.     LOG =70105,
  26.     REG =8269,
  27.     HLP =6395,
  28.     DOC =208207,
  29.     XLS =208207,
  30.     DOCX =208207,
  31.     XLSX =208207,
  32. }
複製代碼
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1骰子
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們職位招聘本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-4-20 11:38

回頂部