#Java学习#(八)流

文章目录

    • 概念与分类
      • 输入输出流
    • 节点流
    • 处理流(过滤流)
      • 缓冲流
      • 转换流
      • 数据流
      • Print流
      • 对象序列化

其他JAVA学习的内容见:目录

概念与分类

  • 概念
    • 来自源或送至目的地的数据流动,程序和I/O设备或文件之间进行传输的对象
    • 功能:完成数据的输入、输出。
    • 一个流是以另一个对象为源或目的传输信息的对象;功能类似于一个管道
  • 分类
    • Java流支持的两种类型的数据
      • 原始字节
      • Unicode字符
    • 按照读写数据的类型
      • 字节流(流)
      • 字符流(阅读器、书写器)
        #Java学习#(八)流_第1张图片
        #Java学习#(八)流_第2张图片

输入输出流

#Java学习#(八)流_第3张图片

  • InputStream
    • 所有字节输入流的基类。
    • 操作的数据的基本单位:字节(8bit)。
    • #Java学习#(八)流_第4张图片
    • 基本方法
int read( ) throws IOException
int read(byte[ ] buffer) throws IOException
int read(byte[ ] buffer,int offset,int length)throws IOException
void close( ) throws IOException
  • OutputStream
    • 所有字节输出流的基类。
    • 操作的数据的基本单位:字节(8bit)
    • #Java学习#(八)流_第5张图片
int write(int b) throws IOException
int write(byte[ ] b) throws IOException
int write(byte[ ] b,int offset,int length)throws IOException
void flush( ) throws IOException
void close( ) throws IOException
  • Reader
    • 所有字符输入流的基类。
    • 操作的数据的基本单位:字符(16bit)
    • #Java学习#(八)流_第6张图片
int read( ) throws IOException
int read(char[ ] cbuf) throws IOException
int read(char[ ] cbuf,int offset,int length) throws IOException
void close( ) throws IOException
  • Writer
    • 所有字符输出流的基类。
    • 操作的数据的基本单位:字符(16bit)
    • #Java学习#(八)流_第7张图片
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

节点流

#Java学习#(八)流_第8张图片

  • 功能:连接文件的输入(出)流。
  • 实例1:TestFileInputStream
    • 功能:输入一个文件中全部字符(Unicode编码)。
  • 实例2:TestFileReader
    • 功能:打印出一个文件中全部字符(Unicode编码)。
  • 实例3:TestFileOutputStream
    • FileOutputStream对象建立时,若文件不存在,则自动建立。
  • 实例4:TestFileStreamToCopyMp3
    • 功能:实现了mp3文件的拷贝
  • 实例5:TestFileWriter
    • 功能:向另一个文件输入大部分Unicode编码。

处理流(过滤流)

#Java学习#(八)流_第9张图片

  • 某些流从文件或其他位置读写字节;某些流将字节“组装”成更有用的数据类型;
  • 通过一个现成的流传递给另一个流的构造器,形成“过滤流”

缓冲流

  • 接在相应的节点流之上,对数据的读写提供了缓冲功能。
  • 作用:提高了读写的效率。
  • 主要类:
    • BufferedInputStream
    • BufferedOutputStream
    • BufferedReader
    • BufferedWriter

转换流

  • 功能:将字节流转换为字符流。
  • InputStreamReaderOutputStreamWriter
    • InputStreamReader需要与InputStream套接
    • OutputStreamWriter需要与OutputStream套接。
    • 构造时可以指定编码集合:new
      • InputStreamReader(System.in,"ISO8859_1");

数据流

  • 作用:直接以基本类型为单元进行读写,提供了可以存取Java基本类型数据的方法。
  • 主要接口和类
    • 接口:DataInputDataOutput
    • 实现类:DataInputStreamDataOutputStream
  • 构造方法:
    • DataInputStream(InputStream in)
    • DataOutputStream(OutputStream out )

Print流

  • 输出流:PrintWriterPrintStream
    • PrintStreamOutputStream基础上提供了增强功能,可方便地输出各种类型的数据(不仅限于byte型)的格式化表示。
    • PrintWriter提供了PrintStream的所有打印方法。
    • 区别:PrintStream只能封装OutputStream类型的字节流,PrintWriter既可以封装OutputStream类型的字节流,还能封装Writer类型的字符输出流。
  • 主要方法:
    • print:不添加换行符
    • println:在输出的结尾添加一个换行符

对象序列化

  • 对象序列化(序列化):将Java对象转换为字节序列,这些字节序列可以保存在磁盘上或者通过网络传输,以备以后重新恢复成原来的对象。
    • 作用:使对象可以脱离程序的运行而独立存在。
    • 对象的序列化:把对象转换为字节序列的过程。
    • 对象的反序列化:把字节序列恢复为对象的过程。
  • 能够序列化的前提:类是可序列化的(serializable)。
  • 类必须实现如下两个接口之一:
    • Serializable:标记接口,实现它无需实现任何方法,它只是表明该类的实例是可序列化的。
    • Externalizable

你可能感兴趣的:(Java学习)