目录
处理器(CPU),存储器(内存),输入设备(Input Device),输出设备(Output Device)
CPU只和内存做数据交换
显示器(O)、触屏显示器(IO)、鼠标(I)、键盘(I)、摄像头(I)、麦克风(I)、扬声器(O)、硬盘(IO)、网卡(IO)
文件被以树结构进行管理,文件就会树上的节点
文件可以分为:
存储数据的文件——普通文件
管理树形结构组织数据的文件——目录/文件夹
这棵文件树是一个逻辑结构,而不是硬盘的逻辑结构
树的节点可以分为:叶子节点 or 非叶子节点
普通文件就是叶子节点
目录文件可以是非叶子节点也可以是叶子节点(空目录)
文件系统的操作
文件移动操作:就是节点的移动
文件复制操作:新建节点+内容复制
目录移动操作:以某个节点为根的子树的移动
目录的复制操作:以某个节点为根子树的复制
关于文件的路径(path):根据一个规则,从文件树上唯一的确定一个位置,这个位置一定对应了某个节点,但是这个节点可以不存在
①绝对路径:从一棵树的根节点出发描述的路径
②相对路径:从当前所在的文件位置出发
Windows使用"\"作为路径分隔符,Linux使用"/"作为路径分隔符,在java中,我们两种都可以使用,但是在使用"\"时需要转义("\\")
路径中的两个特殊符号:
"." 表示在当前的位置
".." 表示回到当前文件位置的上一级目录
File对象描述一个文件
- import java.io.File;
-
- public class FilePath {
- //1、绝对路径的方式创建
- //1.1 直接传入字符串的路径
- File f1=new File("D:\\桌面文件\\java课程\\文件操作\\hello.txt");
- //1.2 传入父路径+子路径
- File f2=new File("D:\\桌面文件\\java课程\\文件操作","hello.txt");
- //1.3 以File传入parent
- File parent=new File("D:\\桌面文件\\java课程\\文件操作");
- File f3=new File(parent,"hello.txt");
- }
文件的比较
当这个文件已经存在时,再次运行这个代码就会创建失败,返回false
删除非空目录
先遍历,删除该目录下的所有子孙,让这个目录变成空目录,然后在删除该目录
- import java.io.File;
- import java.io.IOException;
-
- //删除非空目录
- public class deleteNonemptyDirectories {
- public static void main(String[] args) throws IOException {
- File f1= new File("D:\\桌面文件\\java课程\\文件操作");
- traversal(f1);
- }
-
- public static void traversal(File dir) throws IOException {
- //查看这个目录下的所有孩子(不是子孙)
- File[] f1=dir.listFiles();
- for (File file:f1) {
- //如果这个孩子也是目录就继续遍历
- if (file.isDirectory()){
- //打印当前目录
- System.out.println(file.getCanonicalFile());
- traversal(file);
- //此时已经到最底层文件或者是空目录了
- file.delete();
- }else{
- //得到标准的绝对路径,此时已经到最底层文件或者是空目录了
- System.out.println(file.getCanonicalFile());
- file.delete();
- }
- }
- }
- }