生成式软件工程 · 领学讲义
搜索

电脑里的东西到底是什么

后面所有内容都建立在「文件」和「目录」这两个概念上,先把它们说准。

这一页讲什么
  • 文件、目录、路径这三个词到底指什么;
  • 为什么程序也是一个文件,双击运行和命令行运行有什么区别;
  • C 盘、桌面、用户目录之间的关系;
  • 看懂一个路径字符串的办法。

一、文件就是一张写了字或存了图的数据纸

不管你是写文档、存照片、装软件,电脑里存下来的东西统称文件(file)。 文件有两个属性最重要:名字和里面装的内容。

名字通常由两部分组成:课程表.docx 里,课程表 是你起的名字, .docx 是扩展名(extension)。扩展名用来说明这个文件该由哪个软件打开。 改扩展名不会改变文件内容,只会让电脑换个软件去打开它,所以把 .docx 改成 .txt 之后打开大概率是乱码。

生活类比 文件像宿舍楼下快递架上的一件包裹:包裹有收件人标签(文件名),里面装着东西(内容)。 扩展名像是贴在包裹外面的一个记号,告诉取件的人「这件该送到哪个窗口处理」。

二、目录是装文件的架子

目录(directory)就是文件夹(folder),同一个东西两个叫法。目录里可以装文件, 也可以装别的目录,于是形成一层套一层的结构。这个结构叫目录树。

描述一个文件在树里哪个位置,用的是路径(path)。路径有两种写法:

Windows 用反斜杠 \ 分隔层级,Linux 和 macOS 用正斜杠 /。这个差别会在第 4 篇再次出现。

三、C 盘、桌面、用户目录是什么关系

Windows 电脑插上硬盘后会被分成若干个盘符,最常见的是 C:。 C 盘里有几个固定目录:

目录装的东西能不能随便删
C:\Windows系统本身绝对不能碰,删了开不了机
C:\Program Files安装的软件不要手动删,用「卸载」功能
C:\Users\你的用户名你自己的文件这是你的地盘

桌面(Desktop)并不是一个独立的地方,它只是 C:\Users\你的用户名 下面一个叫 Desktop 的目录,被 Windows 额外显示在了屏幕上。你在桌面新建一个文件, 等于在那个目录里新建了一个文件。

关键结论 你在屏幕上「看到」的桌面、文档、下载,都是某个目录的不同展示方式。 文件系统的真实结构只有一种:一棵从盘符开始的树。后面讲命令行时,你操作的就是这棵树。

四、程序也是文件,只是它会被执行

记事本、浏览器、微信都是文件,区别只在于它们带了「可以被执行」的属性。 在 Windows 里,.exe 结尾的文件是可执行文件。

一个程序运行时,通常要做三件事:读入一些数据、算一算、把结果写出去。这三件事分别对应三个东西:

这三个词在后面的章节里会反复出现。讲到助手时说的「它能观察什么、能操作什么」,问的就是输入和输出。

生活类比 把程序想成食堂的刷卡机:你刷卡是输入,它显示余额是输出,它内部记着「这张卡还剩多少钱」是状态。 刷卡机坏了,常见原因是输入没读到、输出没写对、或者记的状态错了,很少是「它不聪明」。调试程序也从这三处排查。

五、实练:亲手看一遍目录树

不用装任何软件,用系统自带的资源管理器就能验证上面的说法。

  1. 按 Win + E 打开资源管理器。
  2. 在地址栏点一下,把内容改成 C:\Users 然后回车。你会看到以用户名命名的几个目录。
  3. 双击进入你自己的用户名目录,再进入 Desktop。这里就是你的桌面。
  4. 在桌面新建一个文本文档,随便写两个字保存,回到这个目录刷新,会看到同一个文件出现在这里。
  5. 点地址栏,路径会变成可以复制的文本。这就是这个文件的绝对路径。
常见坑 不要在 C:\Windows 和 C:\Program Files 里新建、改名、删除任何东西。 这两个目录由系统和软件管理,手动改动轻则软件打不开,重则需要重装系统。 自己的练习一律放在 C:\Users\你的用户名 下面。

六、为什么要先讲这些

后面的课程会出现大量听起来更高级的词:仓库、分支、镜像、挂载、远程服务器。 它们全都是「文件加目录」这一套结构在不同场景下的延伸。仓库就是一个特殊的目录, 分支是这个目录里某个文件的内容,远程服务器是另一台电脑上的目录。

这一层想清楚了,后面那些词就不会再显得神秘。

现在就做 在 C:\Users\你的用户名 下面新建一个目录,名字叫 gse-practice。 进入这个目录,新建一个文本文件叫 note.txt,写一句话:
「我知道桌面其实是 C:\Users\我的用户名\Desktop 这个目录。」
用地址栏复制出这个文件的完整路径,粘贴到文件最后一行保存。 这个目录后面所有练习都会用到,别删。

自测

1. 我把 作业.docx 改名成 作业.txt,用记事本打开出现乱码,文件坏了吗?
没坏。文件内容一个字节都没变,只是系统按纯文本去解释了一份带格式的文档数据,所以显示成乱码。把名字改回去就能正常打开。
2. 桌面上的文件,和资源管理器里 C:\Users\用户名\Desktop 里看到的文件,是一份还是两份?
同一份。桌面只是这个目录在屏幕上的另一种显示方式,不会占用两份空间,也不会出现两边不同步的情况。
3. 一个程序「没有输出」可能是哪几种情况?
三种:输入没读进来(比如文件路径写错)、计算过程出错中途停了、输出目标写错了(比如想写文件却写到了屏幕上)。排查时先分别确认这三个环节,比自己盯着代码猜要快。
4. 为什么练习目录要放在自己的用户名目录下,不放在 C 盘根目录?
自己的用户目录有完整读写权限,出问题也只影响自己的文件;C 盘根目录与系统目录涉及权限保护,误操作代价大。养成「练习放自己地盘」的习惯,能省掉很多麻烦。