IO、存储、硬盘、文件系统

基本硬件结构

硬件我们可以粗略地分为四大类:
1.处理器(CPU)
2.存储器(内存)
3.输入设备(Input Device)
4. 输出设备(Output Device)
其中,CPU只能和内存做直接的数据交换

I/O的概念和设备

概念:

输入设备和输出设备我们统称为I/O

输入设备:将现实中的物理信号(光信号,电信号,波信号) ->数字个数,存储在内存中
输出设备:数字->物理信号

计算机存储结构

我们可以把计算机的存储结构比作一个金字塔,塔尖的传播速度最快,但是容量较小,反之则越来越慢,但是塔底的容量最大。
IO、存储、硬盘、文件系统_第1张图片

硬盘中的数据(软件层面)

IO、存储、硬盘、文件系统_第2张图片

我们可以简单认为硬盘有数据存储的就是一个整体的存储结构,而没有数据存储的是可用空间。

文件是对硬盘中数据的抽象概念。

文件操作

1.文件被以树形结构管理

这里的树不是二叉树,文件都是树上的结点

每个节点都可以有多个孩子,也就是说每个文件夹中可以有多个类型的文件
IO、存储、硬盘、文件系统_第3张图片

2.文件的分类

1).普通文件
普通文件其实也就是存储数据的文件
像一些文本文件(.txt文件,.java文件等)
也有不是文本的文件(二进制文件: .class文件,.png文件等)
2).目录/文件夹
这种文件用来管理树形结构组织数据,以/结尾就代表这个节点是目录
3). 文件树结构
随着文件越来越多,对文件的系统管理也被提上了日程,如何进行文件的组织呢,一种合乎自然的想法出现了,就是按照层级结构进行组织 —— 也就是我们数据结构中学习过的树形结构。这样,一种专门用来存放管理信息的特殊文件诞生了,也就是我们平时所谓文件夹(folder)或者目录(directory)的概念。
IO、存储、硬盘、文件系统_第4张图片

路径

路径只是一种描述,不代表这个路径一定是真实存在的

绝对路径

从树的根节点出发描述的路径
在这里插入图片描述

相对路径

从“我们"的位置出发,描述的路径

“我们”指的就是进程的当前工作目录,一般一个进程的启动目录就是当前的工作目录
描述相对路径
相对路径不是由根开始的
比如:此时我们身处fileRecv,2022-07-03-2022火箭班-IO-网络原理\IO就是相对路径:
IO、存储、硬盘、文件系统_第5张图片
IO、存储、硬盘、文件系统_第6张图片
路径在代码中的描述
我们用一个String类型描述路径
绝对路径:

String path = "C:\\Users\\11574\\Documents\\Tencent Files\\1157401067\\FileRecv\\2022-07-03-2022火箭班-IO-网络原理\\IO"

相对路径:

String path = "\\2022-07-03-2022火箭班-IO-网络原理\\IO"

这个符号 “ \ ” 叫做路径分隔符,在Java中我们想用的话需要再多打一个\ ,因为一个\表示转义
或者 我们可以用 “ / ” 来替代,就不需要分隔符了

路径中的特殊符号

一个 “ . ” 表示在当前位置(目录)不同
“ … ”表示回到当前位置的父节点上
这两个符号多用于相对路径

IO、存储、硬盘、文件系统_第7张图片

关于文件树的节点

1.普通文件和目录文件分布

普通文件一定是叶子节点

目录文件均可,作为空目录时也可以作为叶子节点

2.文件系统中都是以节点为单元进行操作的(代码层面)
这代表着当我移动或更改一个目录时,其实是对其中的每一个节点进行操作的。(如果目录中还有目录就进行深度遍历或广度遍历)
IO、存储、硬盘、文件系统_第8张图片

通过Java代码操作文件

文件数据包括元数据和内容数据,接下来我们只关注元文件本身。

对于文件树的操作,可以分为,判断是否是目录,创建,删除,重命名。
1.首先 使用File file = new File(“路径字符串”);来描述一个路径。
2.创建文件

creatNewFile();
若创建的文件已存在,则创建失败,返回false
抛出异常很有可能是路径问题

3.删除文件

delete();
只能删除空目录或者普通文件,如果想删除非空目录的话需要进行深度或广度遍历删掉所有子节点才可以删除当前目录

1). 删除普通文件
直接调用delete()方法:

file.delete();

2). 删除文件夹:

IO、存储、硬盘、文件系统_第9张图片

public class DeleteFile {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\\Typora");
        traversal(file);
        file.delete();
    }

    private static void traversal(File file) throws IOException {
        File[] files = file.listFiles();
        for(File file1 : files) {
            if(file1.isDirectory()) {
                //是文件夹继续遍历
                System.out.println(file1.getCanonicalPath() +"\\");
                traversal(file1);
                file1.delete();
            }else {
                //是文件直接删除
                System.out.println(file1.getCanonicalPath());
                file1.delete();
            }
        }
    }
}

IO、存储、硬盘、文件系统_第10张图片
IO、存储、硬盘、文件系统_第11张图片
可以看见执行完操作之后D盘里面的Typora文件夹已经没了

你可能感兴趣的:(java,数据结构,开发语言)