当前位置:C++技术网 > 资讯 > 你必须知道的程序那些事:1 扩展名和格式的区别

你必须知道的程序那些事:1 扩展名和格式的区别

更新时间:2015-06-24 22:39:09浏览次数:1+次

    扩展名就是常见的那些文件名中最后结尾的部分,以"."开始,然后就是一串字符,这样就构成了扩展名。
    经常见到有些朋友的电脑中的文件名并没有显示这个扩展名,而作为一个程序员,那是万万不行的。经常会出现需要修改扩展名的情况,比如,你得到一个扩展名为".dat"的文件,你也知道文件就是一个文本类型的文件,你要查看,不需要借助其他软件,只要更改一下扩展名为".txt"即可用记事本打开。如果你不知道更改扩展名,那可不行哦。
    系统默认情况下是隐藏常见的扩展名的,我们需要通过设置来让它显示出来。方法如下:
    1:打开"控制面板"
    2:切换"查看方式"为"大图标"或者"小图标"
    3:选择"文件夹选项",在弹出的对话框中选择"查看",找到"隐藏已知文件类型的扩展名",然后去掉对勾,然后确定即可。
     这样就可以显示扩展名了,更改文件名时就可以同时更改扩展名。以上是基础常识。
    扩展名有什么用呢?扩展名只是操作系统用来识别文件类型的。然后会根据文件类型,在系统的配置里找到注册了这个文件类型的软件来打开这个文件。其实在你双击文件时,系统程序会拦截你的操作,然后检查文件类型,然后查询系统的配置,然后调用相应的软件,然后将这个文件的路径以命令行的方式传递给这个软件,让软件来打开文件。比如,“test.doc”文件,双击后,系统会启动注册好的软件,可能是office ,也可能是WPS,看你安装了什么,如果没有默认的选择过,系统会提示你选择哪个软件来打开,一般在安装软件时就配置好了。如果你想更改打开文件的软件,可以右击文件,选择打开方式来重新选择软件来打开。
    所以,扩展名的作用就是如上了。
    是不是你还在疑惑?是不是一直还以为扩展名就是文件的类型呢?作为一个程序员,如果你还这么想,那就大错特错了。扩展名对于小白们,大致可以看成是一种文件类型。扩展名是方便系统来识别文件,大致确定文件类型的。而实际上的文件类型并不是通过扩展名的。比如说,你把txt文件的扩展名改成mp3类型,难道就成了MP3了吗,能听吗?
    下面来讲讲文件格式到底是什么样的。
    对于不同的文件,实际的格式是在文件的数据中的,并不是在文件名中的。使用扩展名的机制是让系统可以快速判断一个文件的类型,但这样并不能每次都真实的反映一个文件的格式。不过这样却让系统对文件的识别变得快速方便,否则系统要识别每一个文件的实际格式,都要预先读取一下,这样会导致系统变得非常慢。而扩展名机制就解决了这个问题。
    在我们写程序要对文件进行操作时,我们操作的是文件的数据,对文件的数据进行解析,这不可能依靠扩展名。扩展名在此只是进行一个初步的过滤而已。所以你在打开文件的时候可以看到文件类型选择的东西,那就叫做过滤器。只是初步筛选一下。在程序中,你还要检查文件的实际格式,否则直接进行操作,程序就会出错甚至崩溃。
    不同的文件在数据内部的标志码都不一样,我们在此粗略的说一下。不过一般的文件,在文件数据开头部分就会有相应的字段表明文件的格式。这个就是真正确定文件的类型的。比如JPG文件,开头的四个字节“ 0xFF 0xD8 0xFF 0xE0”就是JPG的文件文件类型标志了,这就是JPG的文件格式。但是这个文件你可以随便更改扩展名,而文件的数据是不会变的,也就是说真正的格式是不会变的。所以要真实的确定文件的格式,就需要对文件这种标志进行分析,确保确实是这种文件。
    JPG的文件如下:
   
  提示:红色框住的部分就代表了JPG文件格式。
    几乎所有的文件都会这样,都会有一个格式的标志。如果没有这样的标志,这种文件你就无法确定其真实的类型。如果这种文件不是文本文件,也不是你定义的,你也不知道每一个字节代表的意义,你是无法正确解析的。这样的文件都不是标准的文件格式,没有规范,只能用作内部文件使用。
    以上就说明了扩展名和文件格式详细信息,区别也就不言而喻了。所以,日后再也不要说扩展名就是文件格式。如果你作为一个程序员不弄清楚这两个概念,在操作文件时你一定是很迷糊的。