• Java基础之IO流整理


    Java基础之IO流

    Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接)

    抽象基类
    字节流:InputStream,OutputStream.

    输出流方法:close(), flush(), write(int b), write(byte[] b), write(byte[] b, int off, int len)
    输入流方法:close(), abstract int read(), int read(byte[] b)

    子类(非装饰流):文件流:FileOutputStream,FileInputStream.
    构造方法:FileOutputStream(File file),FileOutputStream(String filename)
    构造方法可以添加第二个布尔参数设置是否为追加模式

    子类(装饰流):序列化流:ObjectOutputStream,ObjectInputStream
    构造方法:ObjectOutputStream(OutputStream out), ObjectInputStream(InputStream in)
    输入流序列化方法:writeObject (Object obj)
    输出流反序列化方法:readObject ()

    子类(装饰流):过滤字节流:FilterInputStream,FilterOutputStream

    子类(装饰流):字节缓冲流:BufferedInputStream,BufferedOutputStream
    构造方法:BufferedInputStream(InputStream in), BufferedOutputStream(OutputStream out)

    子类(装饰流):打印流PrintStream
    构造方法:PrintStream(String fileName)
    方法:print(),printf(),println()...
    System.setOut(PrintStream out)

    子类(装饰流):字节数据流:DataOutputStream,DataInputStream
    构造方法:DataOutputStream(OutputStream out),DataInputStream(InputStream in)
    方法:write...

    抽象基类
    字符流:Reader,Writer

    输入流方法:close(), int read(), int read(char[] cbuf)
    输出流方法:close(), flush(),write(int c) write(char[] cbuf), write(char[] cbuf, int off, int len) write(String str)

    子类(装饰流):字符缓冲流:BufferedReader,BufferedWriter
    构造方法:BufferedReader(Reader in), BufferedWriter(Writer out)
    特有方法:String readLine(), newLine(),

    子类(装饰流2):转换流:InputStreamReader,OutputStreamWriter
    构造方法:InputStreamReader(InputStream in),InputStreamReader(InputStream in, String charsetName)

    子类(非装饰流):字符文件流:FileReader,FileWriter
    构造方法:FileWriter(File file),FileWriter(String filename)

    Java IO流采用装饰器设计模式,当包装流关闭时,其内部的被包装流也会关闭
    字符流才有write(string)方法,字节流只能写入byte和int

    xmind文件: 提取码:n414


    • readObject读取到末尾时再读取会抛出EOFException
      解决方法:
      1.记录写入的数量
      2.使用容器,例如ArrayList
      3.捕获EOFException
  • 相关阅读:
    【转】1.5 万字 CSS 基础拾遗(核心知识、常见需求)
    【转】Git不要只会pull和push,试试这5条提高效率的命令
    【转】响应式布局的常用解决方案对比(媒体查询、百分比、rem和vw/vh)
    【ASP.NET Core】MVC模型绑定——实现同一个API方法兼容JSON和Formdata输入
    【ASP.NET Core】MVC模型绑定:自定义InputFormatter读取CSV内容
    【ASP.NET Core】MVC模型绑定:非规范正文内容的处理
    PHP 跨域
    MAC如何使用Docker 配置PHP + Nginx运行环境
    PHP的http_build_query() 方法,数组里面的bool类型会被转化为 1 和 0.
    Mac环境下RabbitMq安装与测试教程
  • 原文地址:https://www.cnblogs.com/lixin-link/p/11038034.html
Copyright © 2020-2023  润新知