一、总概:
Java的IO痛java.io包下的类和接口来支持,在java.io包下主要包括输入、输出两种流,每种输入、输出流又可分为字节流和字符流两大类。其中字节流以字节为单位来处理输入。输出操作,而字符流则以字符来处理输入、输出操作。除此之外,Java的IO流使用了装饰器设计模式,将IO流分成底层节点流和上层处理流,其中节点流用于和底层物理节点直接关联--不同的物理节点获取节点流的方式可能存在一定差异,但程序可以把不同的物理节点流包装成统一的处理流,从而允许程序使用统一的输入、输出代码来读取不同的物理存储节点的资源。
二、File类:
1.File类的创建:
希望在程序中操作文件和目录,都可以通过File类来完成。不管是文件还是目录都是使用File来操作的,File能新建、删除、重命名文件和目录,File不能访问文件内容本身。如需要访问内容本身则需要使用输入/输出流。
File类可以使用文件路径字符串来创建File实例,该文件路径字符串既可以是绝对路径,也可以是相对路径。在默认情况下,系统总是依据用户的工作路径来解释相对路径,这个路径由系统属性“user.dir”指定,通常也就是运行Java虚拟器时所在的路径。
//以路径path来创建File对象
File file=new File("path");
if (!file.exists()) {
try {
file.createNewFile(); //如果不存在则创建新的file
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
2.File文件过滤器:
在File类的list()方法中可以接收一个FilenameFilter参数,通过该参数可以只列出符合条件的文件。
File file=new File("");
String[] list = file.list(new FilenameFilter() {
//返回以name为过滤条件的
@Override
public boolean accept(File dir, String name) {
return false;
}
});
三、Java中的IO流的分类:
IO流是实现输入/输出的基础,通过流的方式允许Java程序使用相同的方式来访问不同的输入/输出源。
1.输入流、输出流:
输出流:数据从内存到硬盘,只能从中读取数据不能向其写入数据;
输入流:只能向其写入数据,不能从中读取数据。
2.字节流和字符流:用法一样,区别在与字节流操作的数据单元是八位字节,字符流操作的数据单元是十六位字符(InputStream/Reader,OutputSteam/writer)。
3.节点流和处理流:从一个特定的IO设备读/写的流为节点流;处理流用于对一个已存在的流进行连接或封装。