欢迎来到 CILMY23的博客
🏆本篇主题为:一篇总结!什么是文件?什么是路径?相对路径和绝对路径有什么区别?
🏆个人主页:CILMY23-CSDN博客
🏆系列专栏:Python | C++ | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算法专题 | 代码训练营
🏆感谢观看,支持的可以给个一键三连,点赞收藏+评论。如果你觉得有帮助,还可以点点关注
目录
前言
本期将作为番外,特别知识补充篇,主要涉及一些系统的认识和Linux文件系统结构,以及相对路径和绝对路径,包括用户的认识。
文件
在开篇之前,我们得先弄清楚一个概念 ----- 什么是文件?
你可能会说,很多文档啊,音频啊,等等这些常见的东西,那我们思考一个问题-----文件夹算不算文件呢?
其实是算的。
那文件有什么特点呢?
我现在在Windows系统下,对着一个文件夹右键打开,有一个属性
这是我安装的一个matlab的文件夹。我们可以看到有类型,有位置,有大小,有占用空间,有创建时间,有属性等等这些。
而文件的一般讲述是这样的:
文件其实是计算机系统中存储数据的基本单位。它可以是文本文件、图像文件、音频文件、视频文件或其他任何类型的数据。文件通常由一系列字节组成,可以通过文件名来识别和访问。
但又可以这么说
从广义上来说:磁盘中的文件都是文件。
但在程序设计中我们把文件分为两类:程序文件、数据文件。
程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。
数据文件:文件的内容不一定是程序,还可能是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
根据上述的概述,我们大概可以知道
文件 = 文件属性 + 文件内容
那又有以下几个问题:
- 任何新建的文件存储在磁盘上,要不要占据空间?
- 属性是数据吗?
- 属性是数据的话,那要不要保存?
对于第一点不难理解,所有的新建文件都存储在磁盘上,要占据空间。并且属性是数据,是数据就要保存。
文件属性
所以我们未来对文件操作无非就两种情况
1.对文件属性进行操作
2.对文件内容进行操作
那如果我们将我上述的matlab文件移动到桌面是哪种操作呢?其实是文件属性进行操作。这里我们就要对文件属性进行一个重新认识了。
文件有一定的属性,这根据系统的不同而有所不同,这是因为每个操作系统都有对应的目录结构,和文件系统,但是通常都包括如下属性。
- 名称。文件名称唯一,以容易读取的形式保存。
- 标识符。标识文件系统内文件的唯一标签,通常为数字,它是对人不可读的一种内部名称。
- 类型。被支持不同类型的文件系统所使用。
- 位置。指向设备和设备上文件的指针。
- 大小。文件当前大小(用字节、字或块表示),也可包含文件允许的最大值。
- 保护。对文件进行保护的访问控制信息。
- 时间、日期和用户标识。文件创建、上次修改和上次访问的相关信息,用于保护、安全和跟踪文件的使用。
所有文件的信息都保存在目录结构中,而目录结构也保存在外存上。文件信息当需要时再调入内存。通常,目录条件包括文件名臣及其唯一标识符,而标识符定位其他属性的信息。
好的,现在我们又多了个概念,什么是目录结构
目录结构
目录结构是指在计算机系统中,用于组织和管理文件和目录的层次化结构。它是文件系统中文件和目录的布局和组织方式。
目录结构通过层次化的目录(文件夹)和子目录的组织方式,将文件和目录按照一定的规则进行分类和存放,以便于用户更方便地查找、访问和管理文件。
常见的目录结构是树状结构,其中根目录位于最顶层,下面是一些子目录,子目录下又可以有更多的子目录,以此类推。每个目录可以包含文件和其他子目录,形成一个层次化的结构。
目录结构的设计和组织方式可以根据不同的需求和操作系统的特性而有所不同。例如,在Windows操作系统中使用驱动器符号(如C:\、D:\)来表示不同的存储设备,而Linux操作系统使用一个根目录(/)作为整个文件系统的起始点。
这是Linux系统的树状结构:
良好的目录结构,用户可以更轻松地组织和管理文件,快速定位所需的文件,并确保文件的安全性和可维护性。
因为在目录结构下,文件就被标识上了,一个文件就有一个唯一的文件标识,以便用户识别和引用。其中文件标识包括三个部分:文件路径 + 文件名 + 文件后缀。
我们现在用Windows操作系统举例:
这是一张图片的文件地址,也就是我们所说的文件标识。
"E:\Users\云山若汐\Pictures\Screenshots\屏幕截图 2023-12-20 125338.png"
文件标识就如下所示:
文件的唯一体现在哪?是文件路径还是文件名称,又或者是文件后缀?
答案:是路径体现了唯一。
路径
什么是路径?
路径是用于定位和访问文件或目录的字符串。它描述了从文件系统的根目录或当前工作目录到目标文件或目录的一系列位置。
它为什么具有唯一性?
路径具有唯一性是因为它们提供了一种明确的方式来定位和引用文件或目录。在文件系统中,每个文件或目录都有一个唯一的路径。 文件系统要标识一个特定的文件,可以从以下三个方面确定唯一性
- 从文件系统结构上说:文件系统中的每个文件或目录都位于特定的位置,并且其路径是根据其在文件系统中的位置来确定的。因此,不同的文件或目录具有不同且唯一的路径。
- 从层次结构上说:目录结构通常是层次化的,从根目录开始,通过一系列的子目录来组织文件和其他子目录。每个目录都有一个唯一的路径,因此文件或目录的路径可以通过其在目录结构中的位置来确定。
- 命名约定:文件系统使用命名约定来确保路径的唯一性。在同一目录下,不允许存在同名的文件或目录。这样可以确保每个文件或目录在其所在目录中具有唯一的名称,从而使其路径具有唯一性。
那其实可以观察到一个现象
这是我Windows系统下的路径,
"E:\Users\云山若汐\Pictures\Screenshots\屏幕截图 2023-12-20 125338.png"
这是我的虚拟机Ubuntu的路径:
/home/aaa/桌面/aa
在这个文件夹下,包括了一些文件。
路径分隔符
我们可以观察到,在路径中间,有 \ -- 反斜杠 和 / -- 斜杠,无论是Linux中的斜杠或者是windows当中的反斜杠 /:它们都有统一的一个名称,----路径分隔符
路径分隔符是用于在路径中分隔不同目录或文件名的特殊字符。它在不同的操作系统和文件系统中可能有所不同。
在常见的操作系统中,路径分隔符如下:
Windows系统使用反斜杠(\)作为路径分隔符。
Linux和Unix系统使用正斜杠(/)作为路径分隔符。
注意,尽管Windows使用反斜杠作为路径分隔符,但在大多数编程语言中,使用双反斜杠(\)来表示一个反斜杠字符,因为反斜杠在字符串中通常用于转义字符。
我们还可以发现一个规律:
- 两个路径分隔符之间,一定是一个"文件夹"(目录)
- 路径最末端,一定是一个普通文件或者文件夹
相对路径和绝对路径
路径可以是绝对路径或相对路径。
- 绝对路径:绝对路径从文件系统的根目录开始,并完整地指定了访问文件或目录所需的路径。在Windows系统中,绝对路径通常以驱动器符号(如C:\)开始,然后是一系列的目录名称。在Linux系统中,绝对路径以根目录(/)开始,然后是一系列的目录名称。
例子:
Windows绝对路径:C:\Users\Username\Documents\file.txt
Linux绝对路径:/home/username/Documents/file.txt
- 相对路径:相对路径是相对于当前工作目录的路径。它描述了从当前目录到目标文件或目录的路径。相对路径不包括根目录。
例子:
- 相对路径:Documents/file.txt
如果暂时不理解也没关系,我们了解完最后一个就能在Linux的树状图上理解了
隐藏目录
在之前的图片中,我们看到了两个用蓝色表示的东西,这是个啥?
为什么用.和..表示。
首先先说颜色,蓝色表示的是文件夹,也就是目录。
在第一篇中我们学了cd,切换到对应的工作目录,那现在就可以实操一下。
通过实操可以发现,. 表示当前目录,.. 表示上一个目录。
补充:
其实任何目录下,都会默认具有两个隐藏目录
. 和 ..
. :用它来表示 当前路径.. :用它来表示 上级路径
那如果我们无限制的回退呢?
我们可以发现,我们只能回退到根目录下, 这也对应了Linux的目录结构----Linux的整个文件目录结构是一个多叉树
并且每一个目录可能有很多子目录,但是很多子目录隶属一个目录(父子关系),一个父目录。所 以也印证了路径具有唯一性。
有路径的目的是为了方便找到目标文件,但是为什么要找到目标文件?
实际上,是因为访问文件需要先找到文件。
那为什么要有. 和 ..?
. .:可以方便我们进行路径的回退,毕竟,不光能要进去,也要能出来!
. :方便我们找到当前目录下的一个文件(可执行文件)
那所以理解相对路径就是,在当前目录,通过 . 或者..去找其他文件
绝对路径就是,从根目录出发,直接找到文件。
至此,本篇就讲解完了。 最后是总结
总结:
1️⃣从广义上来说:磁盘中的文件都是文件。但在程序设计中我们把文件分为两类:程序文件、数据文件。
2️⃣文件 = 文件属性 + 文件内容
3️⃣文件操作无非两种,1.对文件属性进行操作 2.对文件内容进行操作
4️⃣常见的目录结构是树状结构,在Windows操作系统中使用驱动器符号(如C:\、D:\)来表示不同的存储设备,而Linux操作系统使用一个根目录(/)作为整个文件系统的起始点。
5️⃣路径是用于定位和访问文件或目录的字符串。它描述了从文件系统的根目录或当前工作目录到目标文件或目录的一系列位置。 路径具有唯一性。
6️⃣Windows系统使用反斜杠(\)作为路径分隔符。Linux和Unix系统使用正斜杠(/)作为路径分隔符。
7️⃣任何目录下,都会默认具有两个隐藏目录 . 和 ..
- . :用它来表示当前路径
- .. :用它来表示上级路径
8️⃣绝对路径从文件系统的根目录开始,并完整地指定了访问文件或目录所需的路径,相对路径是相对于当前工作目录的路径。
🛎️感谢各位同伴的支持,本期番外Linux专题就讲解到这啦,下期我们将进入指令讲解,如果你觉得写的不错的话,可以给个一键三连,点赞,收藏+评论,可以的话还希望点点关注,若有不足,欢迎各位在评论区讨论。
参考: