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

本文详细介绍了Java I/O包中的流分类,包括输入/输出流、字节流与字符流、节点流与处理流,并阐述了各类型流的基本方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入/输出流的分类
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值