答:随便,从*.name到*.big.file.with.long.name,但 Windows 只识别*.name,因为 历史上通过从名称的右边到第一个点获取字符来获取类型。
这部分名称的主要目的是告诉系统在上面绘制哪个图标以及运行哪个程序,而不是显式启动程序,我们“运行”我们需要的文件,而无需深入分析其中的内容文件。这很容易检查:获取照片文件并将其重命名为 test.txt,然后键入<полный путь к файлу>\test.txt. 结果,将打开一个文本编辑器(记事本或您分配给*.txt内容模糊的文件类型的任何其他文件,还有一张照片,而不是文本。您还可以通过任意更改其扩展名并运行来播放此文件它不适合的程序。
好的,关于这个文件我们能知道些什么?
1.假设我们只知道文件名
该文件总是有一个名称,有时由于其特殊性,该名称可能无法通过标准方式显示,例如,当启用“隐藏已注册的文件类型”选项时,.config 将不会显示在 Windows 资源管理器中。
还有“全名”的概念,定义为路径(列出中间文件夹)和实际文件名的组合。
这个名字本身并没有提供更多关于文件的信息,就像你从未见过的陌生人的名字一样。文件名只允许您将一个文件与另一个文件区分开来,并使用此名称而不是磁盘上的物理地址。
在第一个示例中,提到了“文件类型”,但它是什么?文件类型或名称扩展名是一种人为构造,通常与真实文件类型无关。最接近的类比是一个人的姓氏,理论上应该说属于某个家族,但如果把所有的同名都搜集起来,那么很可能无法在其中找到一个共同的祖先。扩展名最初是文件名后的一个句点和三个字母(.exe、.bat)。目前,对扩展名的长度几乎没有限制,并且有复合扩展名(.FB2.ZIP,.TAR.GZ),主要是各种档案的扩展名。此外,句号可以用作主要名称的一部分。
具有绝对正确名称的文件的扩展名是什么:
I.big.file.with.long.name?答:随便,从
*.name到*.big.file.with.long.name,但 Windows 只识别*.name,因为 历史上通过从名称的右边到第一个点获取字符来获取类型。这部分名称的主要目的是告诉系统在上面绘制哪个图标以及运行哪个程序,而不是显式启动程序,我们“运行”我们需要的文件,而无需深入分析其中的内容文件。这很容易检查:获取照片文件并将其重命名为 test.txt,然后键入
<полный путь к файлу>\test.txt. 结果,将打开一个文本编辑器(记事本或您分配给*.txt内容模糊的文件类型的任何其他文件,还有一张照片,而不是文本。您还可以通过任意更改其扩展名并运行来播放此文件它不适合的程序。因此,文件名不会告诉我们(人)或程序有关文件内容的任何有用信息。但是其他程序如何识别它们的文件呢?- 内部结构。
2.假设我们知道文件结构的特点。
程序知道它们可以处理的文件是如何排列的。这意味着您可以尝试使用任何程序打开任何文件,但如果程序无法识别熟悉的内部结构或发现其中的错误,那么它可能会拒绝打开此类文件,并报告格式不兼容。再一次,格式兼容性不依赖于文件扩展名。它仅取决于特定文件中特定字节的位置,您尝试打开该文件的程序已知其要求。但是记事本(记事本和主题的所有可能变体)呢?为什么它会打开任何文件?是的,只是因为没有格式化的纯文本(纯文本)没有任何区别特征,它只是一个字节序列,不包含任何内容,甚至不包含字符编码的指示。
对于网络上广泛使用的格式,您可以找到描述或什至标准来描述哪些(以序列号形式)字节负责此类文件中的内容。
打开任意文件时,需要将文件的结构与预期的已知结构进行比较。如果关键特征匹配,则应检查识别结构的正确性。并且只有在确认无误后,才能论证该文件具有特定的类型,可以被特定的程序打开。
因此,文件的真实类型只能通过其结构来识别。并且结构对数据的格式和位置的限制设置得越严格,误报的可能性就越小。
如果你正在写入一个文件然后你打算读取它,那么确保你的程序在二进制文件的情况下始终以相同的顺序写入和读取文件数据。或者使用类似于 XML 或 JSON 的自定义标记,允许您使用纯文本来存储复杂对象。
如果您只需要找出他们给您留下的文件类型:
*nix 有一个文件命令(感谢@avp),它允许您根据一系列测试来识别文件。其中最有趣的是魔法。
对于 Windows,您可以使用类似的第三方程序,但是没有内置工具。例如TriID -命令行的文件标识符(感谢@firepro)