IO流的概念
- IO就是Input和Output的简写, 也就是输入和输出的含义
- IO流就是指读写数据时像流水一样从一端流到另外一端,因此得旬为"流"
基本分类
体系结构
相关流的详解
FileWriter
java.io.FileWriter类主要用于将文本内容写入到文本文件
常用方法
功能介绍 | 方法声明 |
---|
根据参数指定的文件名构造对象 | FileWriter(String pathname) |
以追加的方式根据参数指定的文件名构造对象 | FileWriter(String pathname, boolean b) |
写入单个字符 | void write(int c) |
将指定字符数组中从偏移量off开始的len个字符写入此文件输出流 | void write(char[] c, int off, int len) |
将cbuf.length个字符从指定字符数组写入此文件输出流中 | void writer(char[] cbuf) |
刷新流 | void flush() |
关闭流对象并释放有关资源 | void close() |
FileReader
java.io.FileReader类主要用于从文本文件读取文本内容
常用方法
功能介绍 | 方法声明 |
---|
根据参数指定的文件名构造对象 | FileReader(String filename) |
读取单个字符的数据并返回, 返回-1表示读取到末尾 | int read() |
从输入流中将最多len个字符的数据读入一个字符数组中,返回读取到的字符个数, 返回-1表示读取到末尾 | int read(char[] c, int offset, int len) |
从输入流中将最多cbuf.length个字符的数据读入字符数组中,返回读取到的字符个数, 返回-1表示读取到末尾 | int read(char[] c) |
关闭流对象并释放有关的资源 | void close() |
FileOutputStream
java.io.FileOutputStream类主要用于将图像数据之类的原始字节流写入到输出流中
常用方法
功能介绍 | 方法声明 |
---|
根据参数指定的文件名来构造对象 | FileOutputStream(String pahtname) |
以追加的方式根据参数指定的文件名来构造对象 | FileOutputStream(String pathname, boolean append) |
将指定字节写入此文件输出流 | void write(int b) |
将指定字节数组中从偏移量off开始的len个字节写入此文件输出流 | void write(byte[] b, int offset, int len) |
将b.length个字节从指定字节数组写入此文件输出流中 | void write(byte[] b) |
刷新此输出流并强制写出任何缓冲的输出字节 | void flush() |
关闭流对象并释放有关的资源 | void close() |
FileInputStream
java.io.FileInputStream类主要用于从输入流中以字节流的方式读取图像数据等
常用方法
功能介绍 | 方法声明 |
---|
根据参数指定的文件路径名来构造对象 | FileInputStream(String pathname) |
从输入流中读取单个字节的数据并返回,返回-1表示读取到末尾 | int read() |
从输入流中将最多len个字节的数据读入字节数组中,返回读取到的字节个数,返回-1表示读取到末尾 | int read(byte[] b, int offset, int len) |
从输入流中将最多b.length个字节的数据读入字节数组中, 返回读取到的字节个数,返回-1表示读取到末尾 | int read(byte[] b) |
关闭流对象并释放有关的资源 | void flush() |
获取输入流所关联文件的大小 | void close() |
BufferedOutputStream
java.io.BufferedOutputStream类主要用于描述缓冲输出流, 此时不用为写入的每个字节调用底层系统
常用方法
功能介绍 | 方法声明 |
---|
根据参数指定的引用来构造对象 | BufferedOutputStream(OutputStream out) |
根据参数指定的引用和缓冲区大小来构造对象 | BufferedOutputStream(OutputStream out, int size) |
写入单个字节 | void write(int b) |
写入字节数组中的一部分数据 | void write(byte[] b, int off, int len) |
写入参数指定的整个字节数组 | void write(byte[] b) |
刷新流 | void flush() |
关闭流对象并释放有关的资源 | void close() |
BufferedInputStream
java.io.BufferedInputStream类主要用于描述缓冲输入流
常用方法
功能介绍 | 方法声明 |
---|
根据参数指定的引用构造对象 | BufferedInputStream(InputStream in) |
根据参数指定的引用和缓冲区大小构造对象 | BufferedInputStream(InputStream in, int size) |
读取单个字节 | int read() |
读取len个字节 | int read(byte[] b, int off, int len) |
读取b.length个字节 | int read(byte[] b) |
关闭流对象并释放有关的资源 | void close() |
BufferedWriter
java.io.BufferedWriter类主要用于写入单个字符,字符数组以及字符串到输出流中
常用方法
功能介绍 | 方法声明 |
---|
根据参数指定的引用来构造对象 | BufferedWriter(Writer w) |
根据参数指定的引用和缓冲区大小来构造对象 | BufferedWriter(Writer w, int size) |
写入单个字符到输出流 | void write(int c) |
将字符数组cbuf中从下标off开始的len个字符写入输出流中 | void write(char[] c, int off, int len) |
将字符数组cbuf中所有内容写入到输出流中 | void write(char[] c) |
将参数s中下标从off开始的len个字符写入输出流中 | void write(String s, int off, int len) |
将参数指定的字符串内容写入到输出流中 | void write(String str) |
用于写入行分隔符到输出流中 | void newLine() |
刷新流 | void flush() |
关闭流对象并释放有关的资源 | void close() |
BufferedReader
java.io.BufferedReader类用于从输入流中读取单个字符, 字符数组以及字符串
常用方法
功能介绍 | 方法声明 |
---|
根据参数指定的引用来构造对象 | BufferedReader(Reader in) |
根据参数指定的引用和缓冲区大小来构造对象 | BufferedReader(Reader in, int size) |
从输入流读取单个字符,读取到末尾则返回-1,否则返回实际读取到的字符内容 | int read() |
从输入流读取len个字符放入数组cbuf中下标从off开始的位置上,若读取到末尾则返回-1,否则返回实际读取到的字符个数 | int read(char[] cbuf, int off, int len) |
从输入流中读满整个数组cbuf | int read(char[] cbuf) |
读取一行字符串并返回,返回null表示读取到末尾 | String readLine() |
关闭流对象并释放有关的资源 | void close() |
PrintStream
java.io.PrintStream类主要用于更加方便地打印各种数据内容
常用方法
功能介绍 | 方法声明 |
---|
根据参数指定的引用来构造对象 | PrintStream(OutputStream out) |
用于将参数指定的字符串内容打印出来 | void print(String s) |
用于打印字符串后并终止该行 | void println(String s) |
刷新流 | void flush() |
用于关闭输出流并释放有关的资源 | void close() |
PrintWriter
java.io.PrintWriter类主要用于将对象的格式化形式打印到文本输出流
常用方法
功能介绍 | 方法声明 |
---|
根据参数指定的引用来构造对象 | PrintWriter(Writer out) |
用于将参数指定的字符串内容打印出来 | void print(String s) |
用于打印字符串后并终止该行 | void println(String s) |
刷新流 | void flush() |
用于关闭输出流并释放有关的资源 | void close() |
OutputStreamWriter
java.io.OutputStreamWriter类主要用于实现从字符流到字节流的转换
常用方法
功能介绍 | 方法声明 |
---|
根据参数指定的引用来构造对象 | OutputStreamWriter(OutputStream out) |
根据参数指定的引用和编码来构造对象 | OutputStreamWriter(Write out, String code) |
将参数指定的字符串写入 | void write(String s) |
刷新流 | void flush() |
用于关闭输出流并释放有关的资源 | void close() |
InputStreamReader
java.io.InputStreamReader类主要用于实现从字节流到字符流的转换
常用方法
功能介绍 | 方法声明 |
---|
根据参数指定的引用来构造对象 | InputStreamReader(InputStream in) |
根据参数指定的引用和编码来构造对象 | InputStreamReader(InputStream in, String charsetName) |
读取字符数据到参数指定的数组 | int read(char[] c) |
用于关闭输出流并释放有关的资源 | void close() |
ObjectOutputStream
基本概念
java.io.ObjectOutputStream
类主要用于将一个对象的所有内容整体写入到输出流中- 只能将支持
java.io.Serializable
接口的对象写入流中 - 类通过实现
java.io.Serializable
接口以启用其序列化功能 - 所谓序列化主要指将一个对象需要存储的相关信息有效组织成字节序列的转化过程
常用方法
功能介绍 | 方法声明 |
---|
根据参数指定的引用来构造对象 | ObjectOutputStream(OutputStream out) |
用于将参数指定的对象整体写入到输出流中 | void writeObject(Object obj) |
用于关闭输出流并释放有关的资源 | void close() |
ObjectInputStream
基本概念
java.io.ObjectInputStream
类主要用于从输入流中一次性将对象整体读取出来- 所谓反序列化主要指将有效组织的字节序列恢复为一个对象及相关信息的过程
常用方法
功能介绍 | 方法声明 |
---|
根据参数指定的引用来构造对象 | ObjectInputStream(InputStream in) |
从输入流中读取一个对象并返回.无法通过返回值来判断是否读取到文件的末尾 | Object readObject() |
用于关闭输出流并释放有关的资源 | void close() |
序列化版本号
序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常(InvalidCastException)
transient关键字
transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。
经验的分享
当希望将多个对象写入文件时, 通常建议将多个对象放入一个集合中, 然后将集合这个整体看做一个对象写入输出流中. 此时只需要调用一次readObject
方法就可以将整个集合的数据读取出来,从而避免了通过返回值进行是否达到文件末尾的判断
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。