我对完成的应用程序有一般性问题。当我进入Windows计算机应用程序的文件时,一些文件可以理解为什么它们在那里,例如可执行文件,各种媒体文件,.dll文件等。但是,我不明白的是它是如何存在的成千上万个不同的文件,位于数百个不同的目录(计数层次结构)中,具有数十种和数百种不同的文件类型。有些文件类型甚至看起来不像实际文件,扩展可能是完全模糊的东西。应用程序如何知道如何使用它?是否所有这些文件都是手写和编译的,或者在生成桌面应用程序时会自动提供这些文件(当然,这取决于应用程序)?我从来没有真正用任何语言编译应用程序,因为我一直在研究JavaScript作为起点,我认识到JavaScript不是用于创建独立应用程序,而是用于实现HTML内部。这就是为什么我对应用程序本身的生成有很多疑问。
为了提供一个示例,我在Audacity应用程序文件夹中看到的一些我无法识别的文件扩展名如下: .lsp .raw .mo .ny .exp < / p>
与我通常遇到的文件类型/扩展数量相比,这是一个非常短的列表,我不知道。总而言之,我的主要问题是为什么应用程序使用了如此疯狂的文件,文件夹和文件类型/扩展。希望有人能帮助我理解。
<小时/> 额外的问题,对于那些可能愿意回答它的人:
在Notepad ++(或.plist编辑器)等应用程序中打开文件时,它是什么意思,它只是一堆不可读的字符?我假设这意味着它是一个编译文件,但我可以使用一些澄清。当我尝试打开.exe,.dll等时会发生这种情况。我明白为什么我不能在文本编辑器中编辑这样的东西,当然还有为什么所有奇怪的符号和字符呢?为什么不试图打开它时会抛出错误?所有奇怪的角色都只是尝试解释已编译的代码吗?
请耐心等待,我对编程很陌生,并且我正在努力更好地了解实际生成基于GUI的桌面应用程序的过程。正如我之前所说,我目前的知识并没有扩展到实际编译应用程序的程度。
感谢您的帮助,我真的很感激。
答案 0 :(得分:0)
大多数此类“奇怪”文件是部分应用程序所需的资源。复杂的应用程序是非常模块化的,每个组件可能需要加载不同的额外资源,通常取决于运行时决定的条件。
例如,在启动时,如果基于Qt的应用程序读取它应该使用德语翻译,它可能从包含其他语言文件的目录加载trans / de_DE.qm。或者游戏可能会根据您的距离逐级加载不同的文件。
你的第二个问题很简单。应用程序函数将大多数资源文件作为字节流读取。如果是这样的流包含'005a'作为4个字节,你会在notepade.exe中看到奇怪的符号,因为该编辑器将这些字节解释为ASCII码,这意味着它会打印它在0,0,5和a处找到的符号。 ASCII表。但是应用程序实际上将其读取为4 x 8位= 32位值,这可能意味着在我的简单示例中变量的32位整数值。因此变量值设置为0x5a,即十进制90。
答案 1 :(得分:0)
关注你的额外问题:你必须学习二进制文件和文本文件是什么,但简而言之:想象一下,你有一个简单的计算器程序将结果存储在一个文件中。假设您要存储的结果是数字64.您必须选择执行此操作:将其保存为文本(字符6和4)或二进制数据。
如果将其存储为文本,则需要两个字节:一个用于字符6的代码,另一个用于字符4.您可以使用记事本打开该文件,您将看到两个字符'64' 。 如果将它存储为二进制值,则只需要一个字节,但如果用记事本打开它,您将看到代码为64的字符:'A'