2013-05-29 56 views
-2

我有一个关于完成的应用程序的一般问题。当我进入Windows计算机应用程序的文件时,某些文件对于它们存在的原因是有意义的,例如可执行文件,各种媒体文件,.dll文件等。但是,我不明白的是如何有可能成千上万个不同的文件,位于数百个不同的目录(计数层次结构)中,有几十个到几百个不同的文件类型。有些文件类型甚至不像实际的文件,扩展名可能是完全模糊的。应用程序如何知道如何使用它?所有这些文件是手写和编译的,还是其中许多是在生成桌面应用程序时自动提供的(当然,这些应用程序会根据应用程序而有所不同)?我从来没有真正编译过任何语言的应用程序,因为我一直在研究JavaScript作为一个起点,并且我认识到JavaScript不是用来创建独立应用程序的,它用于在HTML内部实现。这就是为什么我对应用程序本身的产生有这么多问题。为什么应用程序文件夹包含这么多文件?

为了提供一个例子,有一些我看到包含在其中,我不认识厚颜无耻应用程序文件夹的文件扩展名如下:.lsp .RAW的.mo .ny .EXP

即使与我通常遇到的我不知道的文件类型/扩展的数量相比,这是一个非常短的列表。总而言之,我的主要问题是为什么应用程序使用如此疯狂的文件,文件夹和文件类型/扩展。希望有人能帮助我理解。


额外的问题,对于那些谁可能可以回答它:

,当你在像记事本+ +(或的.plist编辑器)的应用程序打开一个文件,它只是一堆乱码是什么意思?我假设这意味着它是一个编译文件,但我可以使用一些说明。当我尝试打开一个.exe,一个.dll等时,会发生这种情况。我明白为什么我不能在文本编辑器中编辑这样的东西,但为什么所有奇怪的符号和字符?为什么它不会在试图打开它时发生错误?所有奇怪的字符只是试图解释已编译代码的一种方式吗?

多多包涵,我很新的节目,我想更好地了解背后实际上产生基于GUI的桌面应用程序的进程。正如我之前所说的,我目前的知识并没有扩展到实际编译应用程序的程度。

谢谢你的帮助,我真的很感激。

回答

0

大多数的这种“奇怪”的文件是由应用程序的部分所需要的资源。一个复杂的应用程序构造得非常模块化,每个组件可能需要加载不同的附加资源,这通常取决于运行时决定的条件。

例如,在启动时如果一个基于Qt的应用程序读取它应该使用德语翻译,它可能从含有也其他语言的文件目录中加载反/ de_DE.qm。或者一个游戏可能会根据你来自不同的文件从不同的文件逐级加载。


你的第二个问题很简单。大多数资源文件被应用程序函数读取为字节流。如果例如这样的流包含'005a'作为4个字节,您将在notepade.exe中看到奇怪的符号,因为该编辑器会将这些字节解释为ASCII代码,这意味着它将打印它在位置0,0,5和a处找到的符号ASCII表。但应用程序实际上将其读入为4 x 8位= 32位值,这可能意味着我的简单示例中的变量的32位整数值。所以变量值被设置为0x5a,这是十进制90。

0

专注于你的额外的问题:你必须了解什么是二进制文件和文本文件,但简而言之就是:假设你有一个结果存储在一个文件中一个简单的计算器程序。假设你想要存储的结果是数字64.你必须做到这一点:将其保存为文本(字符6和4)或作为二进制数据。

如果将它作为文本存储,则需要两个字节:一个用于字符6的代码,另一个用于字符4.您可以用记事本打开该文件,您将看到两个字符'64 ”。 如果您将其保存为一个二进制值,你只需要一个字节,但如果你用记事本打开它,你会看到它的代码是64字符:“A”

相关问题