zoukankan      html  css  js  c++  java
  • 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子接口,控制序列化过程。

  • 相关阅读:
    PHP 5.5.0 Alpha5 发布
    Ubuntu Touch 只是另一个 Android 皮肤?
    MariaDB 10 已经为动态列提供文档说明
    Percona Toolkit 2.1.9 发布,MySQL 管理工具
    Oracle Linux 6.4 发布
    Ruby 2.0.0 首个稳定版本(p0)发布
    Apache Pig 0.11.0 发布,大规模数据分析
    Node.js 0.8.21 稳定版发布
    红薯 MySQL 5.5 和 5.6 默认参数值的差异
    Django 1.5 正式版发布,支持 Python 3
  • 原文地址:https://www.cnblogs.com/zawjdbb/p/6253436.html
Copyright © 2011-2022 走看看