文件是计算体验的基本部分之一。但什么是“文件”?它是你桌面上的一个图标,一个以电子表格形式打开你预算的列表条目,还有一个你可以给你最近的**起的名字。归根结底,“文件”是一组位(0和1)的集合,这些位以某种应用程序可以理解的模式排列。
开发人员可能会对这些模式保密,这可能会让用户保留某个特定的程序,尽管有其他选择。其他开发人员实际上可能会鼓励采用他们的格式。在某些情况下,您可能能够轻松地打开和解释格式,或者不可能在其本机应用程序之外使用。我们将在本文中探讨上述所有内容的示例。
不同文件类型的第一个重要方面是它是二进制的还是基于文本的。让我们依次来看看每一个。
文本文件是最基本的文件格式。几乎任何有处理器的系统都可以读取它。这种格式是符合ASCII标准的位序列(1和0)(我们暂时忽略Unicode),这意味着计算机可以将每个字节(8位)解释为以下字符:
因为数据是以文本形式存储的,所以您可以通过在文本编辑器中打开文件来查看文件的内容,即使是像Windows Notepad(或Mac、Linux、iOS和Android的等效工具)这样的简单编辑器。由于几乎所有的计算平台都附带了一个基本的文本编辑器,所以您可以将一些(文本)信息放在其中一个文件中,并确信您始终能够访问它。其他应用程序不需要进一步了解任何信息,至少可以正确读取数据。
但是,当您需要在封面上表示文本字体或自动填充日期之类的内容时,事情会变得更加复杂。在这些情况下,ASCII字符有助于基于文本的格式,如Markdown或XML。虽然这赋予了纯文本的好处,比如透明性,但是这些文件通常需要更多的空间来放置标签之类的元素。考虑以下一个纯文本的句子文件,然后是使用XML的开放文档格式的“FlatODT”(FODT)格式。下图显示纯文本版本是53字节,而ODT版本是25000字节。
相反,二进制格式是应用程序将逐位构造的文件。您可以尝试用文本编辑器打开这些文件,但它可能不知道如何解释它们。下面显示了尝试使用文本编辑器打开Microsoft Excel文件的结果。
应用程序需要以特定的方式处理二进制文件中的数据。打开XLS文件时,应用程序必须将文件的前16个字节视为“文件开头”(BOF)标记。在该标记中,第五项是一个位,指示文件是否上次在Windows平台上编辑(“fWin”)。它位于其他四个项目之后,每个项目有两个字节,这意味着“fWin”项目是Excel文件中的第65位。
正如我们所看到的,如果您试图用一个不处理第65位作为“fWin”标志的应用程序打开它,那么该应用程序将无**确打开它。它可能会在屏幕上显示大量乱码字符(如上图所示),用错误消息优雅地处理它(也如上图所示,因为Linux),或者崩溃。在任何情况下,它都不知道如何正确读取数据,因此无**确显示数据。但应用程序一旦编程,就可以处理所需的任意多个文件格式。
下一个要考虑的问题是,文件格式是开放的(即可供他人轻松使用)还是专有的。请注意,“专有”与“关闭”不同,至少不是在所有情况下都是如此。虽然上面的“文本与二进制”的争论是技术性的,“开放与专有”更多地涉及到文件格式的许可条款。关于这方面的更多信息,请参见以下部分。
开放格式是指许可证允许用户将其用于自己的应用程序的格式。某种类型的标准机构还应该监督其由贡献者社区进行的持续开发,以使格式真正“开放”。开放格式也没有许可成本和限制——任何人都可以使用它们,用于任何目的。也许最著名的开放格式是开放文档格式(opendocumentformat,ODF),由OASIS于2005年首次发布。它的目的是为微软在生产力市场上的锁定提供另一种选择。
使用开放格式,您无需担心信息被锁定在特定文件中。考虑以下内容,它显示了我们的平面ODT格式文件。虽然有很多无关的信息围绕着它,你可以看到那里的实际数据,一清二楚。
开放格式的另一个好处是其完整的文档。文件容易阅读是一回事。程序员仍然需要(通过反复试验)弄清楚它的每一个特性到底是做什么的。但是在ODF的情况下,版本1.2规范为程序员提供了他们需要知道的一切,以便有效地实现对它的支持。
最后,专有格式受其开发人员的保护。这可能是因为它们包含商业秘密,出于(感知的)安全的目的,或者仅仅是因为开发人员不想共享他的工作。无论出于何种原因,这些格式都是专有的,因为最终用户许可协议(eula)或其他条款禁止用户尝试反向工程或以其他方式“破解”文件格式。
曾经只是“被禁止”的《数字千年版权法》(DCMA)改变了一切。开发人员现在有了法律支持去追查那些对他们的工作进行反向工程的人。在投资使用专有格式的应用程序之前,您应该考虑一下未来。您将来是否需要将这些信息迁移到其他地方?如果是这样,会有多痛苦?公司会在一年或五年内成立吗?如果一个应用程序的特性也意味着由于专有格式而被锁定在开发人员中,那么你应该考虑它是否值得。
如果你看上面,几个组合会跳出来。诚然,基于文本的文件格式适合于打开。同样,如果格式的目标是专有的,那么通过使其二进制化来保持这种方式就更容易了。但情况并非总是如此。
GIMP的XCF图像格式是一种开放格式,也是二进制的。该项目详细描述了格式如何将组成GIMP文件的图形、文本和层保存为原始位和字节(如下所示)。开发人员可以使用它来编写自己的实现代码,以便像ImageMagick工具箱这样的外部应用程序可以导入它们。
相反,最新的microsoftvisio格式(VSDX)是一种基于XML(因此也是基于文本)的格式。它公布了这些文件组成的详细参考资料。不过,参考文档指出,Microsoft“拥有可能涵盖您的.VSDX支持实现的专利”。此外,美国国会图书馆表示,如果您使用VSDX规范,“并不保证所有相关专利的免版税许可”。这是另一种说法,你可以掷骰子,包括这个支持。不过,微软可能会也可能不会希望你以后为它买单,这取决于它与Visio的竞争程度。
如果你认为这些很复杂,那么非平面ODT格式呢。它是一个包含文档文本的ZIP格式文件(二进制和开放的,除非您也使用它的加密)(内容.xml,打开基于文本的格式)和图形(例如PNG,二进制但打开)。
这是个难题。一方面,一些像iOS这样的操作系统试图将用户与处理文件隔离开来。你有创建文件的应用程序来打开它,谁关心它的结构或者它的扩展名是什么?然而,许多组织(尤其是**)一直在努力确保公共数据采用开放格式。
如果你是一个软件理想主义者(并不是说这有什么问题),那么当你评估新的应用程序时,确保它们是一个开放的(最好是)基于文本的格式。如果您只是想开始工作,那么专有格式对您来说可能不是问题。
你怎么认为?您是否要求您的信息以可转换和验证的开放、基于文本的格式存在?或者无论开发人员使用什么格式,专有还是非专有,对您来说都足够了吗?请在下面的评论中告诉我们!
图片来源:Edilus/Shutterstock
... Powershell弹出一个包含完整帮助文件的窗口。您不需要在这里使用Full参数,因为窗口会拉取完整的文章。 ...
...的内容是查看文档的其他人将看到的内容。而且你甚至不需要安装阅读器——大多数现代浏览器打开PDF都没有问题。虽然您可以编辑PDF,但除非您为Adobe Acrobat、Foxit PhantomPDF或Nitro等高级软件付费,否则您只能****很少的选项。 ...
...以用富有想象力的设计让它们从屏幕上弹出。第三,你不需要一个满是灰尘的文件。 ...
...的语言。这对于CMS应用程序非常重要,因为web服务器环境需要支持它。对于ssg来说,这仍然有点重要,但是在您自己的机器上可以安装什么和不能安装什么方面,您通常有更多的灵活性。 模板语言:模板语言是用...
...ython库。它使用导航解析器来抓取XML和HTML文件的内容。您需要用于多种分析目的的数据。但是,如果您对Python和web抓取还不熟悉,那么Python的漂亮的Soup库对于web抓取项目来说是值得一试的。 ...
...只读”框。 因为所有的数量框都是可填充的,所以我们需要为Total quantity字段创建一个计算。选择该框,然后转到文本框属性>计算。从这里开始,我们可以做两件事中的一件:您可以选择第二个选项来选择一个预设计算,例...
你需要知道的关于Linux的一切都在它的手册页中。例如,您可以搜索一个命令来完成一个任务,即使您不知道它叫什么。但是你怎么能找到手册页呢?这里有一些技巧。 linux的内置手册 有一个古老的(来自Unix黄金时代)Linux笑...