java中输入输出流
一、介绍
java语言定义了许多类专门负责各种方式的输入/输出,这些类都被放在java.io包中。其中,所有输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;而所有输出流都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出类)的子类。
二、输入流
InputStream类是字节输入流的抽象类,是所有字节输入流的父类。InputStream类的具体层次结构。该类中所有方法遇到错误时都会引发IOException异常。(用于处理字节的)
InputStream | AudioInputStream | |
ByteArrayInputStream | ||
StringBufferInputStream | BufferedInputStream DataInputStream PushbackInputStream …… | |
FileInputStream | ||
FilterInputStream | ||
InputStream | ||
ObjectInputStream | ||
SequenceInputStream | ||
PipedInputStream |
对该类的常用方法如下:
1、read()方法:从输入流中读取数据的下一个字节。返回0~255范围内的int字节值。如果已经到达流末尾而没有可用的字节,则返回值为-1。
2、read(byte[] b):从输入流中读入一定长度的字节,并以整数的形式返回字节数。
3、mark(int readlimit)方法:在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数。
4、reset()方法:将输入指针返回到当前所做的标记处。
5、skip(long n)方。法:跳过输入流上的n个字节并返回实际跳过的字节数。
6、markSupported()方法:如果当前流支持mark()/reset()操作就返回true。
7、close方法:关闭输入流并释放与该流关联的所有系统资源。
注意:并不是所有的InputStream类的子类都这次InputStream中的定义的所有方法,如skip()、mark()、reset()等方法只对某些子类有用。
Reader类用于处理字符文本的输入,是字符输入流的抽象类,所有字符输入流的实现都是它的子类。Reader类中的方法与InputStream类中的方法类似。(用于处理字符的)
Reader类的具体层次结构
Reader | CharArrayReader | |
BufferedReader | LineNumberReader | |
FilterReader | PushbackReader | |
InputStreamReader | FileReader | |
PipedReader | ||
StringReader |
三、输出流
OutputStream类是字节的输出流的抽象类,此抽象类是表示字节流的所有类的超类。
OutputStream | ByteArrayOutputStream | |
FileOutputStream | BufferedOutputStream DataOutputStream …… | |
FilterOutputStream | ||
ObjectOutputStream | ||
OutputStream | OutputStream | |
PipedOutputStream |
OutputStream类中的所有方法:
1、write(int b)方法:将指定的字节写入此输出流。
2、write(byte[] b)方法:将b个字节从指定的byte数组写入此输出流。
3、write(byte[] b,int off,int len)方法:将指定byte数组中从偏移量off开始的len个字符写入此输出流。
4、flush()方法:彻底完成输出并清空缓存区。
5、close()方法:关闭输出流。
Writer类是字符输出流的抽象类,所有字符输出类的实现都是它的子类。
writer | BufferedWriter | FileWriter |
CharArrayWriter | ||
FilterWriter | ||
OutputStreamWriter | ||
PipedWriter | ||
PrintWriter | ||
StringWriter |