IO(1)

IO(原理)

  1. 体系结构
  2. 硬盘存储 – 文件操作
  3. 在Java中,实现基本的IO操作

maven(软件工具)

硬件:处理器(CPU)、存储器(内存)、I/O(输入设备(Input Device)、输出设备(Output Device))

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

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

Output Device:数字-》物理信号

I/O设备:显示器(O)、触屏显示器(IO)、鼠标(I)、键盘(I)、摄像头(I)、麦克风(I)、扬声器(O)

硬盘——存储

在这里插入图片描述

路径

  1. 绝对路径(absolute path)缩写为(abs path):从一棵树的根节点除法描述的路径
  2. 相对路径(relative path):从“我们”所在的为止出发,描述的路径。

对于绝对路径,我们无论身在何处,总是唯一确定一个位置。

对于相对路径,我们所处的位置一遍,路径可能就失效了。

“我们”所在的位置一定是一个目录,我们是不能处于一个文件上的。

”我们“所在的位置:每个进程都有一个当前工作目录(current working directory cwd),一般一个进程的启动目录,就是当前目录。

描述路径

D: \ Users \ dhl \ Desktop\ JavaEE

  1. 从根D: 开始
  2. 找到(D:)的孩子Users
  3. 找到(Users)的孩子dhl
  4. 找到(dhl)的孩子Desktop
  5. 找到(Desktop)的孩子JavaEE

C:、D:、E:代表的就是根,所以这个以根为开头的路径一定是一个绝对路径。

\ 为路径分割符(path separator)

当我们身处D:\Users\dhl时,Desktop\JavaEE与上面是描述的同一个节点,但是此时不是由根开始,所以是相对路径。

File对象描述一个文件

String path = "D:\\Users\\dhl\\Desktop\\JavaEE";

因为在字符串中,反斜杠(\)表示转义的意思,比如\n,\t,所以使用\\表示。

Windows使用\作为路径分隔符,Linux使用/作为路径分隔符,但Java跨平台,所以怎么写都可以。

//1. 绝对路径的方式创建
//1.1 直接传入字符串路径
File file1 = new File("D:\\Users\\dhl\\Desktop\\JavaEE\\hello.txt");
//1.2 传入父路径 + 子路径
File file2 = new File("D:\\Users\\dhl\\Desktop\\JavaEE","hello.txt");
//1.3 以File传入parent
File file = new File("D:\\Users\\dhl\\Desktop\\JavaEE");
File file3 = new File(file,"hello.txt");

路径中的特殊符号

一个点(.)和两个点(.)。

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

其中,"…"表示回到当前位置的父节点(目录)上。

这两个符号一般在相对路径上使用较多。

例如:我们现在在D:Users/dhl下

…/…/Users表示D:Users

./Desktop/JavaEE表示D:Users/dhl/Desktop/JavaEE

但是如果此时在根目录,使用"…"还是在根目录,

文件的路径小结

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

Java代码操作文件

创建一个新文件

在这里插入图片描述

返回true:创建成功

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

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

删除一个文件

在这里插入图片描述

true:删除成功

false:对应文件不存在、非空目录删除

IOException:其他情况失败(文件正被其他进程打开)

delete:立即删除

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

删除非空目录

  1. 先遍历(深度优先——递归),删除这个目录下的所有子孙,让这个目录变为空目录。
  2. 删除该目录
public class Demo2 {
    public static void main(String[] args) throws IOException{
        File file = new File("D:\\Users\\dhl\\Desktop\\JavaEE");
        traversal(file);
    }

    private static void traversal(File dir) throws IOException {
        File[] files = dir.listFiles();//查看这个目录下的所有孩子(不是子孙)
        for (File file : files) {
            if (file.isDirectory()) {  //如果这个孩子也是目录,继续深度有限进行遍历
                System.out.println(file.getCanonicalPath() + "\\");
                traversal(file);
            } else {
                System.out.println(file.getCanonicalPath());//得到这个文件的一个标准(去除无意义的..和.)
            }
            file.delete();
        }
    }
}

小结

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

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

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

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

文件数据 = 管理数据 + 内容数据

管理数据是java.io.File对象

createNewFile() + delete()

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

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

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

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

文件数据 = 管理数据 + 内容数据

管理数据是java.io.File对象

createNewFile() + delete()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值