输入/输出流的分类
java.io包中定义了多个流类型(类或抽象类)来实现输入/输出功能;可以从不同的角度对其进行分类:
按
数据流的方向不同可以分为
输入流和
输出流。
按
处理数据单位不同可以分为
字节流和
字符流。
按照
功能不同可以分为
节点流和
处理流。
J2SDK所提供的所有流类型位于包java.io内都分别继承自以下四种抽象流类型。
四个抽象类
字节流 字符流
输入流
InputStream Reader
输出流
OutputStream Writer
凡是以Stream结尾的全是字节流,即最原始的读数据的方式,一个字节一个字节往外读
输入流:
一根管道钝到文件上,开始读数据,站到文件的角度上这叫输出,
站到程序的角度上,这叫输入,以后说输入和输出都是站在程序的角度上的。
反过来叫输出流
字节流:
010101001最原始的,一个字节一个字节往外读
字符流:一个字符一个字符,即
两个字节
节点流:
管道直接钝到数据源上,这叫做节点流
处理流:
套在其他管道之上的这些个流叫做处理流
继承自InputStream的流都是用于向程序中输入数据,且数据的单位是字节(8bit)
FileInputStream 从文件读数据的
PipeInputStream 从管道读数据的
FilterInputStream
LineNumberInputStream DataInputStream BufferedInputStream PushbackInputStream
InputStream
ByteArrayInputStream 从字节数组往外读数据
SequenceInputStream
StringBufferInputStream 从字符串往外读数据
ObjectInputStream 把一个对象从某一个流里面给读出来
InputStream的基本方法:int read() throws IOException read一下就读一个字节
int read(byte[] buffer) throws IOException把字节数组帮我填满数据以后再对他进行处理
int read(byte[] buffer,int offset,int length) throws IOException 读length个字节数,存放到byte[] buffer这个字节数组中去,从字符数组的int offset位置开始存 void close() throws IOException 读完了所有的数之后要关闭
long skip(long n) throws IOException这个是跳过多少个字节不读,用的极少
继承自OutputStream的流是用于程序中输入数据,且数据的单位为字节(8 bit);下面第二层为节点流,第三层为处理流
FileOutputStream 管道钝到文件中写数据
PipedOutputStream 从管道中写数据
OutputStream
FilterOutputStream
DataOutputStream BufferedOutputStream PrintStream
ByteArrayOutputStream
ObjectOutputStream
OutputStream的基本方法: void write(int b) throws IOException
void write(byte[] b) throws IOException
void write(byte[] b, int off,int len) throws IOException 写一个数组的一部分,从数组byte[] b的int off开始,写int len个数祖
void close() throws IOException 关闭流释放内存空间,简单粗暴
void flush() throws IOException 它的意思是先把缓冲区当中的内容写进去,然后再执行close,良好的变成方式,先写flush再写close
Reader 继承自Reader的流都是用于向程序中输入数据,和InputStream一模一样,但是她一次干俩字节;例如中文在java中都是两个字节,下图第二层为字节流,第三层为处理流
BufferedReader LineNumberReader
CharArrayReader
Reader InputStreamReader FileReader
FilterReader PushbackReader
PipedReader
StringReader
Reader的基本方法:int read() throws IOException 读一个字符数组出来
int read(char[] cbuf) throws IOException读一个字符数组出来
int read(char[] cbuf,int offset,int length) throws IOException读一个字符数组的一部分
void close() throws IOException
long skip(long n) throws IOException
Writer 继承自Writer的流都是用于程序中输出数据,且数据的单位为字符(16 bit);下图第二层为节点流,第三层为处理流
BufferedWriter
CharArrayWriter
OutputStreamReader FileWriter
Writer FilterWriter
PipedWriter
StringWriter
FilterWriter
Writer的基本方法: 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