1、硬件
硬件通常由处理器(CPU)、处理器(内存)、输入设备(InputDevice)、输出设备(Output Device)组成。
CPU只能和内存做直接的数据交换。
I/O设备:数据必须由I/O设备处理并加载到内存之后才能被CPU处理。
常见I/O设备:O(显示器、扬声器),I(鼠标、键盘、麦克风),IO(触屏显示器、硬盘、网卡等)。
2、硬盘数据的读写可以理解为文件的读写问题。
3、文件
(1)文件的管理:由OS+文件系统统一管理
(2)基本知识:①文件被以树形结构管理,文件都是树上的节点
②文件可以分为两类:
a.存储数据的文件 ——普通文件,在Windows OS下,以文件后缀(file suffiex)来标记这个文件存储的是什么内容,包含可见文件和隐藏文件;
b.管理树形结构组织数据的文件 ——目录、文件夹
③文件树只是一个逻辑结构,而不是硬盘上的物理结构
(3)关于文件的路径(Path):根据一个规则,从文件树上唯一确定一个位置,这个位置一定对应某个节点,但是这个节点可以不存在。
a.绝对路径:从一颗树的根节点出发描述的路径
(D:\school\.idea):先从根D:开始,找到D的孩子school,再找到school的孩子idea。
绝对路径的方式创建:
public class IO_Test {
public static void main(String[] args) {
//①直接传入字符串路径
File file1=new File("D:\\school\\2022.06.29\\b.txt");
//②传入父路径,再传入子路径
File file2=new File("D:\\school\\2022.06.29","b.txt");
//③以File传入parent
File parent=new File("D:\\school\\2022.06.29");
File file3=new File(parent,"b.txt");
}
}
b.相对路径:从当前所在位置出发,描述的路径。 c.路径中的两个特殊符号——“ . ”和“ .. ” ;.表示在当前位置的目录不动,..表示回到当前位置的父节点。
4、文件的常见方法
(1)compareTo(File pathname); //比较两个文件是否相等
(2)createNewFile(); //true:创建成功;false:文件存在,抛出异常(IOException)
(3)delete(); //立即删除,只能删除叶子节点;true:删除成功,false:文件不存在或被占用,抛出IOException
删除非空目录时:①先遍历,删除这个目录下的所有子孙,让这个目录变成空目录;②删除该目录
public class FileDelete {
public static void main(String[] args) throws IOException {
//删除叶子节点时:
File file=new File("D:\\school\\2022.07.01\\dir");
traversal(file);
boolean r=file.delete();
System.out.println(r);
}
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);
// 当深度优先的遍历完成时,则可以认为该目录一定是空目录了
file.delete();
} else {
System.out.println(file.getCanonicalPath()); // 得到这个文件的一个标准路径(去除一切无意义的 . 和 ..)
file.delete();
}
}
}
}
deleteOnExit(); //在JVM退出时,才真正删除。