返回首页

Windows辨别文件为什么一定要扩展名?感觉Linux上

来源:www.chengshu.net   时间:2022-08-27 19:16   点击:300  编辑:单于贵   手机版

无论是windows还是linux,它们管理的文件都可以有扩展名,也可以要不要扩展名。因为它们辨别文件并不是用扩展名,而是用文件头信息。而文件扩展名的作用主要是关联应用程序,同时让电脑使用者可以方便地辨别文件类型。

1、扩展名的作用winddows之所以被很多人误解用扩展名来辨别文件,是因为windows的图形化中看到的大部分文件都是有扩展名的。实际上,windows上也是有没有扩展名的文件。比如:c盘下的host系统文件就没有扩展名,负责本地解析域名和ip的对应关系,常被用户用来注册软件去联网。

linux之所以被很多人误解为它不要扩展名,是因为linux用户通常都在命令行下创建文件。自己创建文件习惯性不加扩展名,导致人们认为linux下的文件都没有扩展名。其实linux下也是有很多扩展名的,比如:最常见的.tar.gz,就是linux下压缩文件的类型。

不管是windows还是linux,扩展名的作用都是用来关联默认应用程序的。在windows系统中,我们可以找到一个“默认应用”的设置程序,上面可以设置扩展名和默认应用的关联关系。如果设置错了默认应用程序,你会发现这类文件将无法双击打开,只能自选选择正确的应用程序来打开了。在linux系统中,虽然没有这样的默认应用程序的设置。当然文件类型的关联在系统层面也是有的,比如:.o就是目标文件;.so就是共享库文件;.c是C语言文件;.deb是debian软件包;.py就是python源文件;.whl是python包。如果你要执行.py,你的系统上必须有python。

2、系统辨别文件业内人士都知道,操作系统上的文件都是以二进制存储的,本质上是没有任何区别的。扩展名只是为了方便人类知道是什么类型文件,同时也用作关联默认应用程序。而操作系统辨别文件通常是通过读取文件的头信息的。比如:jpg文件的头标志是“FFD8FF”;PNG文件的头标志是“89504E47”;ZIP文件的头标志是“504B0304”。

当系统调用应用程序打开文件时,操作系统会检查该文件的权限以及安全属性。符合权限和安全设置时,应用程序就会启动去检查文件的头信息。如果文件头信息中的标志不属于该应用程序可以打开的类型,该应用程序会通知用户无法打开该文件。如果文件头信息的标志是可以打开的类型,应用程序会按照头信息里规定格式去解读该文件。这个时候,如果文件的真实内容和文件头信息规定的格式不相符,应用程序同样无法打开文件。甚至可能告诉你文件已经损坏。

总结总之,文件扩展名主要是为了关联默认应用程序以及让人们更容易理解。而操作系统真正辨别文件还是靠读取文件头信息。

从开发角度:辨别文件类型有很多办法,但有了扩展名用肉眼即可识别,更方便。

在系统没运行的时候,比如用个u盘看到某些文件就知道它是干嘛的。

引申话题:如果开发人员仅用扩展名判断文件格式,那就太大意也太危险了。

顶一下
(0)
0%
踩一下
(0)
0%