如何获取文件后缀名(无后缀名或后缀名被修改--非常规需求)

这是之前就写了的 只不过放在了百度里 没有转过来 现在转过来


最近做SOCKET通讯传输文件遇到获取文件真实类型,即后缀名的问题

我要传输文件名到客服端,上传文件时若是遇到无后缀名或是后缀名被更改的如何获取其类型(后缀名)

在C#中获取文件后缀名可以Path.GetExtension(filePath);filePath传入为文件的物理路径这样可以很方便的获取到文件的后缀名,但有问题的是若是我把后缀名删除或是更改掉的话文件如何获知起类型,即后缀名

通过网上寻求帮助锁定为文件头 查询相关资料写了一个操作类


[csharp]  view plain  copy
  1. public class FileTypeDetector  
  2. {  
  3. protected static Dictionary<String, String> head2FileType = new Dictionary<String, String>();  
  4. static FileTypeDetector()  
  5. {  
  6. head2FileType.Add("FFD8FFE1""jpg");  
  7. head2FileType.Add("89504E47""png");  
  8. head2FileType.Add("47494638""gif");  
  9. head2FileType.Add("49492A00""tif");  
  10. head2FileType.Add("424D""bmp");  
  11. head2FileType.Add("41433130""dwg");  
  12. head2FileType.Add("38425053""psd");  
  13. head2FileType.Add("7B5C727466""rtf");  
  14. head2FileType.Add("3C3F786D6C""xml");  
  15. head2FileType.Add("68746D6C3E""html");  
  16. head2FileType.Add("44656C69766572792D646174""eml");  
  17. head2FileType.Add("CFAD12FEC5FD746F ""dbx");  
  18. head2FileType.Add("2142444E""pst");  
  19. head2FileType.Add("D0CF11E0""xls/doc");  
  20. head2FileType.Add("5374616E64617264204A""mdb");  
  21. head2FileType.Add("FF575043""wpd");  
  22. head2FileType.Add("252150532D41646F6265""eps/ps");  
  23. head2FileType.Add("255044462D312E""pdf");  
  24. head2FileType.Add("E3828596""pwl");  
  25. head2FileType.Add("504B0304""zip");  
  26. head2FileType.Add("52617221""rar");  
  27. head2FileType.Add("57415645""wav");  
  28. head2FileType.Add("41564920""avi");  
  29. head2FileType.Add("2E7261FD""ram");  
  30. head2FileType.Add("2E524D46""rm");  
  31. head2FileType.Add("000001BA""mpg");  
  32. head2FileType.Add("000001B3""mpg");  
  33. head2FileType.Add("6D6F6F76""mov");  
  34. head2FileType.Add("3026B2758E66CF11""asf");  
  35. head2FileType.Add("4D546864""mid");  
  36. }  
  37.   
  38. private static String BytesToHexString(String fileName)  
  39. {  
  40. StringBuilder stringBuilder = new StringBuilder();  
  41. using (FileStream fis = new FileStream(fileName, FileMode.OpenOrCreate))  
  42. {  
  43. try  
  44. {  
  45. byte[] b = new byte[4];  
  46. fis.Read(b, 0, b.Length);  
  47.   
  48. for (int i = 0; i < b.Length; i++)  
  49. {  
  50. int v = b[i] & 0xFF;  
  51. String hv = Convert.ToString(v, 16); //转换为16进制  
  52. if (hv.Length < 2)  
  53. {  
  54. stringBuilder.Append(0);  
  55. }  
  56. stringBuilder.Append(hv);  
  57. }  
  58. }  
  59. catch  
  60. {  
  61. //未进行异常日志记录  
  62. throw new IOException();  
  63. }  
  64. finally  
  65. {  
  66. if (fis != null)  
  67. fis.Close();  
  68. }  
  69. }  
  70. return stringBuilder.ToString().ToUpper();  
  71. }  
  72.   
  73. /// <summary>  
  74. /// 获取文件类型(默认为*.*)  
  75. /// </summary>  
  76. /// <param name="fileName"></param>  
  77. /// <returns></returns>  
  78. public String FileType(String fileName)  
  79. {  
  80. try  
  81. {  
  82. String head = BytesToHexString(fileName);  
  83. return head2FileType[head];  
  84. }  
  85. catch  
  86. {  
  87. return "*.*";  
  88. //未进行异常日志记录  
  89. //throw new IOException();  
  90. }  
  91. }  
  92. }  
文件头的对应建议用XML等文件存放 调用时读取XML 这儿我懒了下见谅
### 回答1: "ap3g2-k9w7-tar.153-3.jpk5.tar"可以理解为一个固件文件的名称。这个文件是用于下载和更新无线网络设备上的固件的。在网络设备中,固件是存储在设备内部的软件程序,它控制了设备的运行和功能。 "ap3g2-k9w7-tar"表示这是一个适用于Cisco Aironet 3700系列无线AP设备的固件文件。"153-3"表示该固件的版本号。"jpk5"是特定于Cisco的标识符,用于区分不同版本和修复版本之间的差异。 在下载和更新固件时,"ap3g2-k9w7-tar.153-3.jpk5.tar"文件将被使用。在固件文件中,".tar"表示这是一个压缩文件,类似于.zip或.rar文件。用户需要将该文件下载到适用的设备上,并将其解压缩以提取固件文件。然后,设备将使用该固件文件进行更新,以获得更新功能、修复漏洞或增强性能。 需要注意的是,对于非专业人士,下载和更新固件文件可能需要一些技术知识和指导。人们应该在设备制造商提供的官方网站上寻找相关的下载和更新指南,以确保正确且安全地完成该过程。此外,他们应该确保选择适用于其设备型号和版本的正确固件文件,以避免使用不兼容或不正确的固件。 ### 回答2: “ap3g2-k9w7-tar.153-3.jpk5.tar\" download" 是一个命令或指令,它指示要下载名为“ap3g2-k9w7-tar.153-3.jpk5.tar\"的文件。通过这个命令,我们可以将文件从某个位置或服务器下载到我们的设备上。文件名中的后缀“.tar”表示这是一个压缩文件,可能包含了多个文件或目录。这个文件可能是用于更新或安装某个软件包或操作系统。 在执行下载命令之前,需要确保我们有足够的存储空间来容纳下载的文件,并且网络连接是正常的。下载完成后,我们可以通过其他命令或工具来解压缩这个文件,并查看或使用其中的内容。特定的解压缩方法取决于文件的格式和所使用的操作系统。 总之,“ap3g2-k9w7-tar.153-3.jpk5.tar\" download" 是一个用于下载文件的命令,文件名中的信息可能提供了一些关于文件内容和版本的信息。具体的操作步骤和后续处理取决于我们要使用这个文件的目的和所处的环境。 ### 回答3: "ap3g2-k9w7-tar.153-3.jpk5.tar" 是一个固件文件的名称,用于下载和安装到 Cisco AP3G2 系列的无线接入点上。这个文件是以 .tar 格式压缩的,这意味着它包含了一组被打包在一起的文件。下载和安装这个文件可以用于升级 AP3G2 设备的固件版本。 在下载这个文件时,我们需要确保网络连接的稳定性和速度,以避免下载中断或文件损坏。一般来说,可以通过浏览器或者命令行的方式进行下载,具体的方法可以参考相关的文档或者官方网站。 下载完毕后,我们可以将这个 .tar 文件上传到适用于 AP3G2 设备的文件系统中。然后,我们需要在设备的命令行界面中使用适当的命令来执行固件的安装过程。这个过程可以是自动的,也可以需要手动的干预,具体取决于设备和固件的版本。 固件升级是为了更新设备的功能、修复漏洞或者提供其他改进而进行的常规维护操作。在进行固件升级之前,应该仔细阅读相关的文档和指南,以确保操作正确和顺利进行。此外,为了避免不必要的风险和潜在的问题,建议在升级之前备份设备的配置和数据。 总的来说,"ap3g2-k9w7-tar.153-3.jpk5.tar\" download" 是一个下载固件文件并在 Cisco AP3G2 系列设备上进行安装的指令。通过固件升级,我们可以使设备保持最新、稳定和安全的状态,提供更好的性能和功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值