IO流用来处理设备(硬盘,内存,U盘,打印机等)之间的数据传输
java对数据的操作通过流的方式
java用于操作流的对象都在IO包中
流的分类:
按数据流的方向:
输入流(从文件到程序)和输出流(从程序到文件)
输入流:数据以字节形式从其他文件或者终端设备向程序流入,从流中读取数据使用InputStrean类完成
输出流:数据以字节形式从程序流出,向流中写入数据,使用OutputStream完成
按处理数据的单位:字节流和字符流
字节流的顶层父类:InputStream,OutputStream
字符流的顶层父类:Reader,Writer 按功能:节点流和处理流
注意:
1.凡是带有Input和Reader的都是输入流,凡是带有Output和Writer的都是输出流
2.字节流是处理字节类型的数据流对象 ,字符流是处理字符类型的数据流对象
3.节点流是直接读取数据的流,处理流是包装节点流的流
4.IO流都是成对出现的
5.这些体系的子类都以父类名作为后缀。 而且子类名的前缀就是该对象的功能。
一、字节流:
常见类:
InputStream:输入流,以字节的形式从流中读取数据。
OutputStream:输出流,以字节形式向流中写入数据。
InputStream常用方法: Public void close():关闭输入流
Public abstract int read():以数字的方式读取内容
Public int read(byte [] b):将内容读取到byte数组中,同时返回读入的个数
OutputStream常用方法:
Public void close():关闭输出流
Public abstract int write(int b):在数据流中写入一个字节
Public void write(byte[] b):在数据流中写入一个byte数组
Public void write(byte[] b,int off,int len):在数据流中写入一个指定范围byte数组
Public void flush():刷新缓冲区
文件流:
FileInputStream主要用于从文件读取数据
FileOuputStream:主要用于向文件中写入数据
注意:
Public FileOuputStream(File f,boolean flag)方法:
Boolean flag 参数是可选的,true表示追加模式向指定的文件中写入数据,当flag为true时,写入的数据追加在打开文件中数据的后面,不会覆盖原有数据。
false表示以覆盖模式向文件中写入数据。即覆盖掉原有的数据。默认flag参数值是flase。也可以不要flag参数,如Public FielInputStream(File file);
缓冲流:
BufferedInputStream:为InputStream增加了内存缓冲区
BufferedOutputStream:为OutputStream增加了内存缓冲区
根本目的:允许java的IO流一次操作多个字节,从而提高系统的性能。
创建流的时候可以指定缓冲区的大小:
new BufferedInputStream(InputStrean in) //按照32个字节缓冲区的缓冲流
new BufferedInputStream(InputStrean in,int size)//指定大小的缓冲流
new BufferedOutputStream(OutputStream in) //按照32个字节缓冲区的缓冲流
new BufferedOutputStream(OutputStream in,int size)//指定大小的缓冲流
flush()方法可以强制输出缓冲区的数据
数据流:
DataInputStream:可一次性读取一个double类型的数据(即一次可读取8个字节)
DataOutputStream:可一次性写入一个double类型的数据
readUTFT()方法:读取一个Unicode编码的字符,默认是UTF-8 数据流一般和字节数组流一起使用
ByteArrayInputStream:用于读取一个字节数组
ByteArrayOutputStream:用于写入一个字节数组
toByteArray()方法:将流中的数据转换成一个字节数组
需要注意的一点是要先写先读
二、字符流
Reader:输入流,以字符的形式从流中读取数据。
Writer:输出流,以字符的形式向流总写入数据。
Reader常用方法:
Public abstract void close():关闭输入流
Public int read():读取单个字符
Public int read(char[] c):将内容读取到字符流数组中,并返回读取的长度
Writer常用方法:
Public abstract void close():关闭输出流
Public int writer(String str):输出字符串到流中
Public int writer(char[] c):输出字符数组到流中
Public abstarct void flush():强制清空缓存
文件流:
FileReader
FileWriter
转换流:将字节流转换成字符流
InputStreamReader
OutputStreamWriter
缓冲流:为流增加缓冲区 BufferedReader BufferedWriter
常用方法:
BufferedReader(Reader in ):构造方法,接受Reader类实例
Public String readLine():从缓冲区读取一行文本
Public int read():读取单个字符
Public int read(char[] c,int off,int len):读取字符数组的一部分
BufferedWriter(Writer in ):构造方法,接受Writer类实例
Public String newe():写入一个行分隔符
Public int write(int c):写入单个字符
Public int writer(char[] c,int off,int len):写入字符数组的一部分
Public int witer(String s,t off,int len):写入字符数串的一部分
原文:http://www.cnblogs.com/soysouce/p/4891784.html