1.IO的概念
java程序对数据的操作是通过"流"IO的方式,IO流用来处理设备之间的数据传输(上传和下载文件)
2.流
流是一组有顺序的,有起点和终点的集合(字节),是对数据传输的一种抽象,它就是为了数据传输
3.流的分类
* ①.按照数据流向的不同分为:输入流(input)和输出流(output)
* -- 输入流:读取外部数据到程序中(将持久化的文件数据加载到内存)
* -- 输出流:将程序中的数据保存到磁盘(将内存中的数据持久化到磁盘)
* ②.按照处理数据类型的单位不同分为:字节流和字符流
* -- 字节流:以字节流byte为单位 如:音频、视频、图片
* -- 字符流:以字符char为单位 如:文本文件(一次读入或读16位二进制)
* 注意:只要是纯文本数据优先选择字符流,
* ③.按照角色功能划分分为:节点流和处理流
* -- 节点流:直接作用于文件的或者直接与数据相连(文件流):如FileInputStream
* -- 处理流:加速文件的读写操作,在节点流上面套接了一层(主要指缓冲流):BufferedInputStream
4.IO流的体系结构
* ①.在java程序中,为了对不通过来源和性质的流对象调用统一的方法,Java中的流定义了顶层输入/输出的接口或者抽象类
* 满足不同性质具体的流对象就会有统一的方法。
* ②.在java中有4个基本的抽象流类型,所有的流都继承于他们四个。
* 类型\流向 输入流 输出流
* 字节流 InputStream OutputStream
* 字符流 Reader Writer
* ③.按照角色功能的划分
* 抽象基类 节点流 缓冲流
* InputStream FileInputStream 字节输入流 BufferedInputStream 字节输入缓冲流
* OutputStream FileOutputStream 字节输出流 BufferedOutputStream 字节输出缓冲流
* Reader FileReader 字符输入流 BufferedReader 字符输入缓冲流
* Writer FileWriter 字符输出流 BufferedWriter 字符输出缓冲流
5.File类
* ①.File类是Java中处理文件的类
* ②.File类中的方法涉及到文件的创 建、删除、重命名等待,并不包括文件的内容读写,只要涉及到内容一定要IO流来处理
* ③.路径
* 绝对路径:包含盘符在内的完整文件路径
* 相对路径:在当前文件目录下的文件路径
* \:表示电脑磁盘上默认额路径分隔符
* \\:在java编译器中使用的形式(其实就是在\基础上加一个转义字符\)
* /:在路径中相当于"\\",是java程序中路径的另外一种表现形式
* ④.常用的方法
* exists() 判断是否存在
* canWrite() 是否可写
* canRead() 是否可读
* isFile() 是否为文件
* isDirectory() 是否为目录
* length() 文件的长度
* lastModify() 最后一次修改的时间
* createNewFile() 新建文件
* delete() 删除
* mkdir() 创建文件目录
* mkdirs() 递归创建目录
* list() 列出当前目录下的所有文件
* listFiles() 基本等同list()
用法实例
public void test3() throws IOException {
File file1 = new File("D:\\io\\hello.txt");
// 删除文件
file1.delete();
if (!file1.exists()) {
boolean b = file1.createNewFile();
System.out.println(b);
}
// 创建目录
File file2 = new File("D:\\io\\oo1");
if (!file2.exists()) {
file2.mkdir();
}
// 递归创建
File file3 = new File("D:\\io\\a\\b\\c");
file3.mkdir();
// 列出当前目录下的所有文件
File file4 = new File("D:\\java");
String[] strs = file4.list();
for (String file : strs) {
System.out.println(file);
}
File[] listFiles = file4.listFiles();
for (File file : listFiles) {
String path = file.getPath();
System.out.println(path);
}
}