文件,我们之前在C语言中接触过,是在硬盘上存储数据的方式,操作系统帮我们把硬盘的一些细节都封装起来了,因此在这里我们只需要了解文件的相关接口即可.
首先硬盘是用来存储数据的,和内存相比,硬盘的存储空间更大,访问速度更慢,成本更低,可以实现持久化存储,而操作系统通过"文件系统"这样的模块来管理硬盘.
实际上在我们的电脑中只有一个硬盘(我这里加了一块,所以我有两块)操作系统可以通过文件系统吧这个硬盘抽象成多个硬盘一样(其实CDE盘就是操作系统通过文件系统锁划分出来的)
NTFS是Windows上的文件系统,背后有一定的格式来组织硬盘的数据
EXT4是Linux上常见的文件系统,虽然说有不同的文件系统,但是其管理文件的方式都是类似的,那么文件在系统中是一个什么样的结构呢?
答:通过目录(也就是我们口头说的文件夹)-文件构成了"N叉树"的树形结构.
我们可以看到,同样是一个cat.jpg的文件,站在不同的基准目录上,查找的路径是不相同的
文件系统上存储的文件,具体来说又分成两个大类.
1.[文本文件]存储的是字符,字符通常采用utf-8来编码,utf8就是一个大表,这个表上的数据组合就可以称为是字符
2.[二进制文件]存储的是二进制的数据
那我们如何判断一个文件是文本文件还是二进制文件呢?其实也很简单,用记事本打开,你能看懂的就是文本文件,若是乱码,则就是二进制文件
后续针对文件的操作,文本和二进制,操作方式是完全不同的
文件系统操作
首先要声明一个视角问题
IO:其实是input和output,你是站在cpu的角度来看待输入输出的
在Java中,我们可以通过java.io.file,通过file对象来描述一个具体的文件.file对象可以对应到一个真实存在的文件,也可以对应到一个不存在的文件
站在操作系统的角度看待,目录也是文件,操作系统中的文件是一个更广义的概念,具体来说里面有很多种不同的类型
1.普通文件(通常见到的文件)
2.目录文件(通常见到的文件夹)
windows上目录之间的分隔符,可以使用/也可以使用\,Windows诞生之前,表示目录的分隔符都是用 / Windows前身是dos.Linux和Mac就只是支持 / ,所以及时是在Windows,也尽量使用/,使用\在代码中需要搭配转义字符
运行结果如下
上述创建文件我们是使用了一个绝对路径,差别不是那么特别大,接下来我们使用相对路径来创建一个文件
标签:文件,存储,Java,操作系统,二进制,文件系统,IO,硬盘 From: https://blog.csdn.net/X_HJJ/article/details/140176822