Java EE 你还没有学懂么

(点击跳转即可哦)

java学习专栏

LeetCode刷题专栏


JavaEE

序言

SE 语法(多线程)

数据结构(DS)

数据库(DB)

系统原理(硬件知识、OS知识)


Web开发的学习

  1. I/O的知识
  2. 网络原理
  3. Web开发

​ 1 前端

​ 2 后端

  1. JVM(原理)

硬件

处理器(CPU)、 存储器(内存)、输入设备(Input Device)、输出设备(Output Device)

CPU 只能和内存做直接的数据交换

Input Device : 现实中的物理信号(光信号、电信号、波信号)-> 数字个数,存储在内存中

Output Device: 数字 -> 物理信号


硬盘——存储

CPU内部 读写速度更快

内存

易失存储 变量、对象 断电后丢失 以进程为单位管理,本质上的编程语言对硬件中内存的抽象

内存(Memory)又称为RAM(Random Access Memory)支持以 O(1) 时间复杂度,根据下标(内存地址)访问的存储


硬盘

脱机存储、网络存储 脱机存储(U 盘、移动硬盘、磁带、光盘)

​ 网络存储(网盘类似的概念)

持久存储 : 1 断电后 一般仍能保存 2 通常可以跨进程读写


从下到上,读写的速度更快

从上到下,存储的容量更大


硬盘的实现

1 磁盘(利用磁性实现的一种存储方式) 硬盘(机械硬盘)

2 固态硬盘(Solid State Disk SSD)

3 闪存 (Flash Memory)


磁盘更合适做连续数据的读写,而不适合做随机数据的读写


硬盘数据的读写 -> 文件的读写问题

OS + 文件系统(FileSystem) 统一管理文件

文件的基本知识:

  1. 文件被以树形结构(数据结构学过的树,但不是二叉树)进行管理,文件都是树上的节点(node)
  2. 文件可以大体分为两大类: a. 存储数据的文件——普通文件(俗称的文件)

​ b. 管理树形结构组织数据的文件——目录/文件夹(directory/dir)

  1. 这颗文件树只是一个逻辑结构,而不是硬盘上是物理结构

路径

关于文件的路径(Path) : 根据一个规则,从文件树上 唯一确定一个位置,这个位置 一定 对于到某个节点,但是这个节点可以不存在

路径:

1 绝对路径(absolute path abs path): 从一颗树的根节点出发描述的路径

2 相对路径 (relative path): 从 "我们"所在的当前位置(一定是一个目录)出发,描述的路径

什么叫做“我们” 所在 的 位置: 每个进程都有一个当前工作目录,一般一个进程的启动目录,就是当前工作目录


Windows 使用 \ 作为 路径分隔符,Linux(Unix/XOS)使用 / 作为路径分隔符。

好在Java 号称跨平台,所有会帮我们处理这个问题。

我们在 代码中 写 “/” 或者 “\\” 都可以。 由于“/”不用转义,一般使用“/” 为主。


路径表示中的两个特殊符号 一个点(“.”)和 两个点(“…”)

其中,“.”表示在当前位置(目录)不动

“…”表示回到 当前位置的父节点(目录)上


关于文件的路径:

  1. 路径是树上找到一个节点的位置
  2. 路径并不表示文件一定存在
  3. 路径分为 绝对路径和相对路径
  4. 当前位置:进程的当前工作目录
  5. 文件路径 “/” 或者 “\\” 表示路径分隔符,java下使用哪个都可以
  6. “. ” 和 “…” 的含义

树的结点分为:叶子节点 or 非叶子节点

普通文件 -> 叶子节点

目录文件 -> 叶子节点(空目录) or 非叶子节点


数据结构中学过树: 结点的操作更容易,子树的操作更复杂

文件系统中,以结点为单位进行操作(在代码层面)

文件移动操作(文件重命名、文件剪切+粘贴):结点的移动(重命名 or 移动到其他结点下)

文件复制操作(复制+粘贴):新建结点+内容的复制

目录移动操作(目录重命名、目录剪切+粘贴):以该结点为根的一颗子树的移动

目录复制操作:以该节点为根的一颗子树 的复制

删除:默认情况下,只能删除普通文件 or 空目录。只能删除结点,不能删除子树

删除非空目录:对整棵树的删除


树的操作,需要转换为结点的操作: 以目录的复制为例,遍历(深度 or 广度)整颗树,然后对其中的每个结点进行复制


通过Java代码来操作文件(File)

文件数据 = 元数据 + 内容数据


所有类必须放在某个包(package)下,习惯上包的命名习惯 com.djl.io.文件名


文件的IO

createNewFile()
boolean  createNewFile()

创建一个新文件。

返回true:创建成功

返回false:创建失败(文件已经存在)

抛出 IOException:发生了 IO异常(最常见的是,文件应该在的目录还不存在)

File file1 = new File("D:/java/javastudy/Java_EE课堂代码/test.txt");
boolean r1 = file1.createNewFile();
System.out.println(r1);

delete() and deleteOnExit()
boolean delete()
void deleteOnExit()

只能操作叶子节点( 普通文件 or 空目录)

区别:

delete : 立即删除

deleteOnExit: 在JVM 退出时才真正删除

删除非空目录

  1. 先遍历(深度优先—递归),删除这个目录下的所有子孙,让这个目录变成空目录
  2. 删除该目录
private static void traversal(File file) throws Exception{
    //查看这个目录下的所有孩子(不是子孙)
    File[] files = file.listFiles();
    for(File f : files){
        if(f.isDirectory()){
        	System.out.println(f.getCanonicalPath() + "\\");
        	traversal(f);
        	f.delete();            
        }else{
            System.out.println(f.getCanonicalPath());
            f.delete();
        }

    }
}

小结:

IO 设备(数据必须经由IO设备处理并加载到内存之后才能被CPU处理)

硬盘设备(存储的常识:读写速度、易失性 等)

文件系统(文件是硬盘数据的抽象)

树形结构、路径、目录 or 普通文件

文件数据 = 管理数据(java.io.File对象) + 内容数据



要是对大家有所帮助的话,请帮我点个赞吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值