其他JAVA学习的内容见:目录
概念与分类
- 概念
- 来自源或送至目的地的数据流动,程序和I/O设备或文件之间进行传输的对象
- 功能:完成数据的输入、输出。
- 一个流是以另一个对象为源或目的传输信息的对象;功能类似于一个管道
- 分类
- Java流支持的两种类型的数据
- 原始字节
- Unicode字符
- 按照读写数据的类型
- 字节流(流)
- 字符流(阅读器、书写器)
- Java流支持的两种类型的数据
输入输出流
- InputStream
- 所有字节输入流的基类。
- 操作的数据的基本单位:字节(8bit)。
- 基本方法
int read( ) throws IOException
int read(byte[ ] buffer) throws IOException
int read(byte[ ] buffer,int offset,int length)throws IOException
void close( ) throws IOException
- OutputStream
- 所有字节输出流的基类。
- 操作的数据的基本单位:字节(8bit)
int write(int b) throws IOException
int write(byte[ ] b) throws IOException
int write(byte[ ] b,int offset,int length)throws IOException
void flush( ) throws IOException
void close( ) throws IOException
- Reader
- 所有字符输入流的基类。
- 操作的数据的基本单位:字符(16bit)
int read( ) throws IOException
int read(char[ ] cbuf) throws IOException
int read(char[ ] cbuf,int offset,int length) throws IOException
void close( ) throws IOException
- Writer
- 所有字符输出流的基类。
- 操作的数据的基本单位:字符(16bit)
void write(int c) throws IOException
void write(char[ ] cbuf) throws IOException
void write(char[ ] cbuf,int offset,int length) throws IOException
void write(String string) throws IOException
void write(String string,int offset,int length) throws IOException
void close( ) throws IOException
void flush( ) throws IOException
节点流
- 功能:连接文件的输入(出)流。
- 实例1:
TestFileInputStream
- 功能:输入一个文件中全部字符(Unicode编码)。
- 实例2:
TestFileReader
- 功能:打印出一个文件中全部字符(Unicode编码)。
- 实例3:
TestFileOutputStream
- FileOutputStream对象建立时,若文件不存在,则自动建立。
- 实例4:
TestFileStreamToCopyMp3
- 功能:实现了mp3文件的拷贝
- 实例5:
TestFileWriter
- 功能:向另一个文件输入大部分Unicode编码。
处理流(过滤流)
- 某些流从文件或其他位置读写字节;某些流将字节“组装”成更有用的数据类型;
- 通过一个现成的流传递给另一个流的构造器,形成“过滤流”
缓冲流
- 接在相应的节点流之上,对数据的读写提供了缓冲功能。
- 作用:提高了读写的效率。
- 主要类:
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
转换流
- 功能:将字节流转换为字符流。
InputStreamReader
和OutputStreamWriter
InputStreamReader
需要与InputStream
套接OutputStreamWriter
需要与OutputStream
套接。- 构造时可以指定编码集合:
new
InputStreamReader(System.in,"ISO8859_1");
数据流
- 作用:直接以基本类型为单元进行读写,提供了可以存取Java基本类型数据的方法。
- 主要接口和类
- 接口:
DataInput
、DataOutput
- 实现类:
DataInputStream
、DataOutputStream
- 接口:
- 构造方法:
DataInputStream(InputStream in)
DataOutputStream(OutputStream out )
Print流
- 输出流:
PrintWriter
和PrintStream
PrintStream
在OutputStream
基础上提供了增强功能,可方便地输出各种类型的数据(不仅限于byte型)的格式化表示。PrintWriter
提供了PrintStream
的所有打印方法。- 区别:
PrintStream
只能封装OutputStream
类型的字节流,PrintWriter
既可以封装OutputStream
类型的字节流,还能封装Writer
类型的字符输出流。
- 主要方法:
print
:不添加换行符println
:在输出的结尾添加一个换行符
对象序列化
- 对象序列化(序列化):将Java对象转换为字节序列,这些字节序列可以保存在磁盘上或者通过网络传输,以备以后重新恢复成原来的对象。
- 作用:使对象可以脱离程序的运行而独立存在。
- 对象的序列化:把对象转换为字节序列的过程。
- 对象的反序列化:把字节序列恢复为对象的过程。
- 能够序列化的前提:类是可序列化的(serializable)。
- 类必须实现如下两个接口之一:
Serializable
:标记接口,实现它无需实现任何方法,它只是表明该类的实例是可序列化的。Externalizable