一、概念的理解:
数据流:是指一组有顺序的,有起点和终点的集合,是对输入和输出的总称。
流又分为低级流和高级流。
低级流:也叫做节点流,可以简单的理解为要读写的数据有明确的来源和去向的流。
高级流:又叫过滤流、处理流。不能独立存在,必须要依托另一个流进行工作,使用高级流,往往是为了简化读写的工作。
字节流:以字节为最小单位读写数据
字符流:以字符为最小单位读写数据
字节输入流的父类:InputStream
字节输出流的父类:OutputStream
这两个流是抽象的,是不能实例化的
二、常用的流及其作用
1. FileOutputStream:基本byte流,文件写出
FileInputStream:基本byte流,文件读取功能
2. DateOutputStream:依赖基本输出byte流,扩展出基本类型读取
DateInputStream:依赖基本输入byte流,扩展了基本类型写出方法
3. BufferedOutputStream:
依赖于基本输出byte流,扩展出缓冲处理,提高io的性能
BufferedInputStream:
依赖于基本输入byte流,扩展出缓冲处理,提高io的性能
4.OutputStreamWriter:
依赖于基本输出byte流,扩展了文本编码处理
InputStreamReader
依赖基本输入byte流,扩展出文字解码处理
5 PrintWriter:
依赖一个字符输出流Writer,最终还是依赖于byte流(间接依赖)。扩展出println()按行写出
BufferReader:
依赖一个字符输入流Reader,最终还 是依赖于基本的byte输入流。扩展出readLine方法
6:ImageIO也是高级流,依赖于基本的byte流
三、使用范例
package paacticDemo;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Demo04 {
/**
* 从一个文件中读取信息,然后把所读取到的信息写入到另外一个文件中
*
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// 基本byte流,可以读取功能
FileInputStream fis = new FileInputStream("Hello.txt");
byte[] bytes = new byte[100];
int len = fis.read(bytes);
// 缓冲流,可以提高文件的读写功能
BufferedInputStream bis = new BufferedInputStream(fis);
// 把从Hello.txt中的内容以utf-8编码的形式读取
InputStreamReader isr = new InputStreamReader(bis, "utf-8");
FileOutputStream fos = new FileOutputStream("world.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
OutputStreamWriter osw = new OutputStreamWriter(bos, "utf-8");
osw.write('好');
}
}