I/O流
Posted 火丶日月明
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了I/O流相关的知识,希望对你有一定的参考价值。
1.I/O流
1.1 基本概念
I/O就是Input/Output的简写,也就是输入/输出的含义。
I/O流主要指像流水一样源源不断进行读写的状态/过程。
1.2 基本分类
以数据读写的单位不同分为:字节流 和 字符流。
其中字节流主要指以字节为基本单位进行读写的流,可以用于读写任何类型的文件。
其中字符流主要指以字符(2个字节)为基本单位进行读写的流,只能用于读取文本文件。
以数据流动方向的不同分为:输入流 和 输出流(站在程序的角度)。
其中输入流主要指从文件中读取数据内容输入到程序的内部。
其中输出流主要指将程序中的数据内容输出到文件中,也就是写入到文件。
1.3 I/O流的框架
字节流的顶层父类:InputStream类 和 OutputStream类 - 抽象类
其中InputStream类的常见子类:
FileInputStream类、DataInputStream类、ObjectInputStream类
其中OutputStream类的常见子类:
FileOutputStream类、DataOutputStream类、ObjectOutputStream类
字符流的顶层父类:Reader类 和 Writer类 - 抽象类
其中Reader类的常见子类:
BufferedReader类、InputStreamReader类
其中Writer类的常见子类:
BufferedWriter类、OutputStreamWriter类
补充:
java.io.PrintStream类是OutputStream类的间接子类。
1.4 FileOutputStream类(重中之重)
(1)基本概念
java.io.FileOutputStream类主要用于将图像数据之类的原始字节流写入输出流中。
(2)常用的方法
FileOutputStream(String name) - 根据参数指定的文件名来构造对象。
FileOutputStream(String name, boolean append) - 用于以追加的方式来构造对象。
void write(int b) - 用于写入单个字节数据。
void write(byte[] b, int off, int len)
- 用于将byte数组b中从off位置开始的len个字节写入输出流。
void write(byte[] b)
- 用于将byte数组中的所有内容写入输出流。
void close() - 用于关闭流并释放有关资源。
1.5 FileInputStream类(重中之重)
(1)基本概念
java.io.FileInputStream类用于从输入流中读取图像数据之类的原始字节流。
(2)常用的方法
FileInputStream(String name) - 根据参数指定的文件名来构造对象。
int read() - 用于从输入流中读取一个字节的数据。
- 若读取到文件末尾则返回-1,否则返回实际读取到的字节数据。
int read(byte[] b, int off, int len)
- 用于读取len个字节放入到数组b中从下标off开始的位置。
int read(byte[] b)
- 用于读取b.length个字节放入数组b中。
- 当返回-1时表示已经读取到文件的末尾,否则返回实际读取到的字节个数。
int available() - 用于获取该输入流所关联文件的大小。
void close()
1.6 DataOutputStream类(查手册会用即可)
(1)基本概念
java.io.DataOutputStream类主要用于将基本数据类型的变量写入到输出流中。
(2)常用的方法
DataOutputStream(OutputStream out) - 根据参数指定的引用来构造对象。
- 其中OutputStream是个抽象类,因此实参需要传递子类的对象。
void writeInt(int v) - 用于将参数指定的整数以4个字节形式写入,先写入高字节。
- 如:127:0000 0000 0000 0000 0000 0000 0111 1111
高 => 低
void close()
1.7 DataInputStream类(查手册会用即可)
(1)基本概念
java.io.DataInputStream类主要用于从输入流直接读取一个基本数据类型的数据。
(2)常用的方法
DataInputStream(InputStream in) - 根据参数指定引用构造对象。
- 其中InputStream类是个抽象类,因此实参需要传递子类的对象。
int readInt() - 用于读取一个整数并返回。
void close()
1.8 BufferedReader类(重点)
(1)基本概念
java.io.BufferedReader类主要用于读取单个字符、字符数组以及整个字符串。
(2)常用的方法
BufferedReader(Reader in) - 根据参数指定的引用来构造对象。
- 其中Reader类是个抽象类,实参需要传递子类的对象。
int read() - 用于读取单个字符并返回。
- 当读取到末尾则返回-1,否则返回实际读取到的数据内容。
int read(char[] cbuf, int off, int len)
- 用于读取len个字符放入数组cbuf中下标从off开始的位置。
int read(char[] cbuf)
- 用于读取cbuf.length个字符放入数组cbuf中。
String readLine() - 用于读取一行字符串内容。
void close()
1.9 BufferedWriter类(重点)
(1)基本概念
java.io.BufferedWriter类主要用于写入单个字符、字符数组以及字符串内容。
(2)常用的方法
BufferedWriter(Writer out) - 根据参数指定的引用来构造对象。
- 其中Writer是个抽象类,实参需要传递子类对象。
void write(int c) - 用于写入单个字符。
void write(char[] cbuf, int off, int len)
- 用于写入cbuf中从off位置开始的len个字符。
void write(char[] cbuf)
- 用于写入cbuf中所有的字符。
void write(String str) - 用于写入整个字符串。
void newLine() - 用于写入行分隔符,也就是换行符。
void close()
1.10 PrintStream类(重点)
(1)基本概念
java.io.PrintStream类主要用于更加方便地打印各种类型的数据。
(2)常用的方法
PrintStream(OutputStream out) - 根据参数指定的引用来构造对象。
- 其中OutputStream类是个抽象类,实参需要传递子类的对象。
void print(String s) - 用于打印参数指定的字符串。
void println(String x) - 用于打印参数指定的字符串并换行。
void close()
以上是关于I/O流的主要内容,如果未能解决你的问题,请参考以下文章