认识文件
文件分为 狭义 和 广义 两种
狭义的文件:指的是硬盘上的 文件 和 目录
广义的文件:
泛指计算机中很多的软硬件资源。操作系统,会把很多个硬件设备和软件资源抽象成了文件。
按照文件的方式来统一管理。
我们现在只讨论狭义的文件。
文件除了有数据内容之外,还有一部分信息。
例如 文件名、文件类型、文件大小 等并不作为文件的数据而存在,我们把这部分信息可以视为文件的元信息。
1. 树型结构组织和目录
随着文件越来越多,对文件的系统管理也被提上了日程,如何进行文件的组织呢?
一种合乎自然的想法出现了,就是按照层级结构进行组织 —— 也就是我们数据结构中学习过的树形结构。
一种专门用来存放管理信息的特殊文件诞生了,也就是我们平时所谓文件夹(folder) 或者目录(directory) 的概念。
文件夹 和 目录 中保存的其实就是之前提到的关于文件的元信息。
通过一个个文件夹,可以将文件组织起来,更方便的使用它。
2. 文件路径(Path)
之前写的代码主要是靠变量来存储数据的,而变量是存储在内存中的。
现在的文件则是在硬盘上。
每个文件在硬盘上都是有一个具体的 “路径”
上述图片的路径就是 d:/javaEE.jpg (在 windows 上也可以写作 d:\javaEE.jpg)
表示一个文件的具体位置路径,就可以使用 / 来分割不同的目录级别。
可以表示为:
d 表示的是盘符。
c、d、e 这样的盘符是通过 “硬盘分区” 来的。
每个盘符可以是一个单独个硬盘,也可以是若干个盘符对应一个硬盘。
2.1 绝对路径
从树型结构的角度来看,树中的每个结点都可以被一条从根开始,一直到达的结点的路径所描
述,而这种描述方式就被称为文件的绝对路径。
比如:以 c:d:盘符开头的文件的路径。
上述就是一个 绝对路径。
2.2 相对路径
除了可以从根开始进行路径的描述,我们可以从任意结点出发,进行路径的描述,而这种描述方式就被
称为相对路径。
简答理解就是以当前所在目录为基准,以 . 或者 . . 开头(. 有时候可以省略),找到指定的路径。
当前所在目录 称为 工作目录 ,每个程序运行的时候,都有一个工作目录。
(在控制台里通过命令操作的时候,是特别明显的;后来进化到图形化界面了,工作目录就不那么明显了。)
默认工作路径是这个,但是这个工作路径是可以更改的。
举个例子:
假设当前的工作目录是 d:/Gitee ,如果要定位到 javaCode 这个目录就可以表示成 ./javaCode
(./就表示当前的目录)
如果要定位到 “码云工具” 就表示成 ./码云工具。
如果要定位到 javaCode 里面的 data-structure,就表示成 ./javaCode/data-structure。
如果工作目录有不同,定位到同一个文件的相对路径的写法是不同的。
同样是定位到 javaCode 这里。
- 如果工作目录是 d:/,相对路径就写作 ./Gitee/javaCode。
- 如果工作目录是 d:/Gitee,相对路径就写作 ./javaCode。
- 如果工作目录是 d:/Gitee/码云工具,相对路径就写作 . ./javaCode
(. . 表示当前目录的上级目录) - 如果工作目录是 d:/Gitee/码云工具/c-language-training-program,相对路径就是 …/…/javaCode。
IDEA 的工作路径默认就是当前项目的所在目录。
如果代码中写了一些相对代码的路径,工作路径就是以上述路径为基准。
3. 文件的类型
像 word、exe、图片、视频、音频、源代码、动态库… 这些不同的文件,整体可以归纳为两类:
- 文本文件(存的是文本,字符串)
这个文本里存的数据,一定是合法的字符,都是在你指定字符编码的码表之内的数据。 - 二级制文件(存的是二进制数据,不一定是字符串)
没有任何限制可以存任何你想要的数据。