-2

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

举个例子,我在 Audacity 应用程序文件夹中看到的一些我不认识的文件扩展名如下:.lsp .raw .mo .ny .exp

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


额外的问题,对于那些可能愿意回答的人:

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

请耐心等待,我对编程很陌生,我正试图更好地了解实际生成基于 GUI 的桌面应用程序背后的过程。正如我之前所说,我目前的知识并没有扩展到实际编译应用程序的程度。

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

4

2 回答 2

0

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

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

于 2013-05-29T14:41:44.133 回答
0

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

例如,在启动时,如果基于 Qt 的应用程序读取它应该使用德语翻译,它可能会从还包含其他语言文件的目录中加载 trans/de_DE.qm。或者游戏可能会根据您的进度从不同的文件中逐级加载。


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

于 2013-05-29T14:33:30.213 回答