java I/0
1.体系结构
硬件
1.处理器(CPU)、存储器(内存)、输入设备(Input Device)、输出设备(Output Device) — IO
CPU只能和内存做直接的数据交换
Input Device:现实中的物理信号(光信号,电信号,波信号)-> 数字个数,
存储在内存中
Output Device:数字 -> 物理信号
IO设备
显示器(O)、触屏显示器(IO)、鼠标(I)、键盘(I)、摄像头(I)
硬盘(IO)、网卡(IO)
硬盘
硬盘(Hard Disk Drive)的实现
1.磁盘:利用磁性实现的一种存储方式 硬盘(机械硬盘)
磁盘更适合做连续数据的读写,而不适合做随机数据的读写
2.固态硬盘:(Solid State Disk)
3.闪存(Flash Memory)
文件是对硬盘中数据的抽象概念
2.硬盘存储
变量、对象本质上的编程语言对硬件中内存的抽象
硬盘数据的读写
-> 文件的读写
OS + 文件系统(FileSystem)统一管理文件
我们看到的文件的基本知识
文件
1.文件被以树形结构(数据结构学过的树,但不是二叉树)进行管理
2.文件可以大体分成两大类:
1)存储数据的文件 — 普通文件(俗称的文件)
2)管理树形结构组织数据的文件 — 目录/文件夹(directory/dir)
3.这棵文件树只是一个逻辑结构,而不是硬盘上的物理结构
1.普通文件
在Windows OS 下,以文件后缀(file suffiex)来标记出这个文件存储的内容是什么内容
*.txt 普通文本 *.docx Word文档
2.可见 or 隐藏
目录、文本文件、不是文本的文件(二进制文件)
文件的路径(Path):根据一个规则,从文件树上唯一确定一个位置,这个位置一定对应到某个节点,但是这个节点可以不存在
路径
1.绝对路径(absolute path):从一棵树的根节点出发描述的路径
2.相对路径(relative path):从"我们"所在的当前位置出发,描述的路径
什么叫”我们“所在的位置:每个进程都有一个当前工作目录(current working directory),一般一个进程的启动目录就是当前工作目录
真实中怎么去描述路径(重点):windows下,现以绝对路径为例
在代码的字符串中如何表示这个路径
String path = “D: \ \ 课程 \ \ 2022-06-27-2022火箭班 -IO” (使用\ \ 表示 \)
Windows 使用 \ 作为路径分隔符,Linux(Unix/XOS)使用 / 作为路径分隔符
java可以跨平台,会自动帮我们处理这个问题
代码中写”/“ 或者”\ \ “都可以。由于”/“不用转义,所以一般用”/“为主
路径表示中的两个特殊的符号一个点(“.”)和两个点(“…”)
其中,"."表示在当前位置(目录)不同
其中,"…"表示回到当前位置的父节点(目录)上
这两个符号一般在相对路径上使用较多
关于文件的路径
1.路径是树上找到一个节点的位置
2.路径并不表示文件一定存在
3.路径分为绝对路径和相对路径
4.当前位置:进程的当前工作目录
5.文件路径""
文件系统中,以结点为单元进行操作(在代码层面)
文件移动操作(文件重命名、文件剪切 + 粘贴):结点的移动(重命名or移动到其他节点下)
文件的复制操作(复制 + 粘贴):新建结点 + 内容的复制
目录移动操作(目录重命名、目录剪切 + 粘贴)
目录复制操作:以该节点为根的一颗子树的复制
删除:默认情况下只能删除普通文件or空目录。只能删除结点,不能展出子树
删除空目录:对整棵树的删除
树的操作,需要转换橙结点的操作:以目录的复制为例,遍历(深度 or 广度)整棵树,然后对其中的每个结点进行复制
3.实现基本IO操作
文件数据 = 元数据 + 内容数据
对于文件系统树的操作
判断是否存在、判断是否是目录、创建、删除、重命名
普通文件or空目录。只能删除结点,不能展出子树
删除空目录:对整棵树的删除
树的操作,需要转换橙结点的操作:以目录的复制为例,遍历(深度 or 广度)整棵树,然后对其中的每个结点进行复制