1、IO流由四个抽象类扩展而来
1)InputStream 抽象的字节输入流(读取)
2)OutputStream抽象的字节输出流(输出)
3)Reader 抽象的字符输入流
4)Writer 抽象的字符输出流
不用缓冲区
一般使用int read() 和 void write(int x);
使用缓冲区:
字节型使用byte[] bs = new byte[2048];
一般使用int read(byte[] bs) 和 void write(bs,int start,int length)
字符型使用char[] ch = new char[2048];
一般使用int read(char[] ch) 和 void write(ch,int start,int length)
String readLine() 和 void write(String str)
2、针对文件操作的类(节点流:直接对数据进行操作)
1)FileInputStream 文件的字节输入流(从文件中读取数据)
2)File Output Stream 文件的字节输出流(像文件中写数据)
3)FileReader 文件的字符输入流
4)File Writer 文件的字符输出流
3、缓冲流:(处理流:需要套接到节点流上)
1)BufferedInputStream 缓冲的字节输入流
2)BufferedOutputStream缓冲的字节输出流
3)BufferedReader 缓冲的字符输入流
4)BufferedWriter 缓冲的字符输出流
4、数据流(针对数据类型进行操作 处理流)
1)DataInputStream 数据的字节输入流
2)DateOutputStream 数据的字节输入流
5、对象流:(处理流)
1)ObjectInputStream 对象的字节输入流
2)ObjectOutputStream 对象的字节输出流
注意:输出对象,自定义对象时 该对象一定要实现对象的序列化接口:java.io.Serializable 才能进行之后的操作
6、转换流
1)InputStreamReader 字节转化为字符的一个以字符的形式实现输入的输入流类
2)OutputStreamWriter 字符转化为字节的一个以字节的形式实现输出的输出流类
在创建转换流时,可以指定字符编码集
代码:InputStreamReader isr = new InputStreamReader(new FileInputStream(),"UTF-8");
OutputStreamWriter osw = new OutputStreamWriter(new FileInputStream(),"UTF-8");
文件以什么形式存的 就要以什么形式读取
7、打印流(节点流)具有字节流和字符流转换的功能
1)PrintStream 字节打印流类
2)PrintWriter 字符打印流
System系统类
out
in
err
属于PrintStream
定义的System.out.print() 是输出到控制行。
可以修改out的值
PrintStream old = System.out;
PrintStream ps = new PrintStream(path);
System.setOut(ps);//修改System类的out静态变量的值
System.out.println("会将这一句内容输出到文件中");
System.setOut(old);//将静态变量out的值修改过来
System.out.println("会将这一句内容输出到控制台中");