IO流介绍
流的种类
分类图:
基本类
字节流:
节点流
父类:InputStream,OutputStream
子类 FileInputStream,FileOutputStream
处理流
缓冲:
父类接口:FilterInputStream,FilterOutputStream
实现类: BufferedInputStream, BufferedOutputStream
字符流:
节点流
父类:Reader Write
子类:InputStreamReader,OutputStreamWrite
处理流
缓冲:BufferedReader,BufferedWrite
IO操作步骤
建立联系(确定目标)->确定流->进行操作(读/写)->关闭流
代码示例:
/*
* 字符流读取()一个数据
* 流程:确定目标
* 确定流
* 读取
* 关闭流
* */
public class Demo001 {
public static void main(String[] args) throws IOException {
File f=new File("a.text");
Reader r=new FileReader(f);
//读取一次
// System.out.println((char) r.read());
//循环读取
int i=0;
while ((i=r.read())!=-1){
//打印读取的值,将其转换为char类型
System.out.println((char)i);
}
//关闭流
r.close();
}
PS:输入输出是相对于程序来说的,即读数据为输入,写数据为输出
基本输入流
概念
用来读取的,将其他地方的数据读取到Java内存的流称为输入流
抽象类:InputStream(字节) 和 Reader(字符)
常用方法(InputStream):
常用方法(Reader)
文件节点类: FileInputStream 和 FileReader
FileInputStream 和 FileReader,它们都是节点流,直接和指定文件关联。操作方式基本一致。而且都使用父类种的方法即可。
基本输出流
抽象类:OutputStream 和 Writer
常用方法:字节流
常用方法:字符流
文件节点类: FileOutputStream 和 FileWriter
在抽象类下面,真正可以创建对象的是FileOutputStream 和 FileWriter,它们都是节点流,直接和指定文件关联
缓冲处理
作用
缓冲提高性能:字节流缓冲流直接套在节点流上即可使用;字符缓冲流 +新增方法(不能使用多态):
BufferedInputStream
构造器
常用方法:
BueredReader
构造器
常用方法:
Connons_IO工具
简介
CommonsIO是apache的一个开源的工具包,封装了IO操作的相关类,使用CommonsIO可以很方便的读写文件,url源代码等。commons-IO 需要加入classpath 的第三方jar 包内的 class 文件才能在项目中使用
架包
相关类
IOUtils包含一些工具类,用于处理读,写和拷贝,这些方法基于InputStream, OutputStream, Reader和Writer工作
FileUtils包含一些工具类,它们基于File对象工作,包括读,写,拷贝和比较文件
FilenameUtils包含一些工具类,它们基于文件名工作而不是File对象。这个类旨在在Unix和Windows环境下保持一致,帮助在两个环境下过渡(如从开发环境到生成环境)
FileSystemUtils包含一些工具类,基于文件系统访问功能不被JDK支持。目前,只有一个方法就是得到驱动器空余空间。注意这使用命令行而不是 nativecode。
常用方法
IOUtils
FileUtils
移动文件
FilenameUtils
FileSystemUtils