• java.io包中定义了多个流类型(类或抽象类)来实现输入/输出功能,所有流类型都在io包中。

    从不同角度对其进行分类:

      按数据流方向的不同,分为输入流和输出流

      按处理数据单位的不同,分为字节流和字符流

      按功能的不同,分为节点流和处理流

        节点流:从数据源读写数据

        处理流:在已存在的流之上,通过对数据的处理为程序提供更为强大的读写功能

    所有流分别继承自输入字节(8bit)流:InputStream,输入字符流Reader,输出字节流:OutputStream,输出字符流Writer

    处理流--缓冲流:

      BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter

      缓冲流要套接在相应的节点流之上,对读写数据提供缓冲功能,提高了读写效率,同时增加了新的方法:

        mark()定位,reset(),BufferedReader提供readLine()方法用于读取一行,BufferedWriter提供newLine()写入一个行分隔符。  

      对于输出的缓冲流,写出的数据会先缓存在内存中,使用flush()方法会使内存中的数据立刻写出。

    处理流--转换流:

      InputStreamReader和OutputStreamWriter用与字节数据到字符数据之间的转换。

      InputStreamReader要与InputStream套接。

      OutputStreamWriter要与OutputStream套接。

      转换流工作时可以指定编码集合,如:

        InputStream isr = new InputStreamReader(System.in,"ISo8859_1");

    处理流--数据流:

      utf-8。

      DataInputStream和DataOutputStream分别继承自InputStream和OutputStream,使用时需要进行套接。

      DataInputStream和DataOutputStream提供了可以存取与机器无关的Java原始类型数据(int,double)的方法。

    Print流:

      PrintWriter和PrintStream都属于输出流,分别针对字符和字节。

      PrintWriter和PrintStream提供了重载的print。

      PrintWriter和PrintStream的输出操作不会抛出异常,用户通过检测错误状态获取错误信息。

      PrintWriter和PrintStream有自动flush功能。

    Object流:

      序列化:Serializable 标记接口,没有方法,标记给编译器看,说明可序列化,JDK控制序列化过程。

      ObjectInputStream和ObjectOutputStream。

      transient 透明,修饰的成员变量在序列化时不予考虑,即跳过。

      Externalization接口:Serializabe子接口,控制序列化过程。

  • 相关阅读:
    Scrapy snippets
    HttpClient4的cookie rejected问题,以及如何消除该warning输出
    简单的python smtp发邮件代码
    FTP服务器:Proftpd
    “当HTML5来敲门”专题沙龙杂记
    Titanium Mobile 1.6版本发布
    给同学们分享一些面试经验
    用CSS3实现动画进度条
    3天内构建Facebook Web应用的经验之谈
    仅用CSS创建立体旋转幻灯片
  • 原文地址:https://www.cnblogs.com/zawjdbb/p/6253436.html
Copyright © 2020-2023  润新知