IO 流 四个抽象类和对应的抽象方法

来源:互联网 发布:网络棋牌赌博案件 编辑:程序博客网 时间:2024/04/29 05:55
输入/输出流的分类
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

0 0
原创粉丝点击