zoukankan      html  css  js  c++  java
  • i/o流

    1、IO流拓展

    ● io 流中对象很多,解决问题到底用哪个对象?
    明确一:要操作的数据是数据源还是数据目的。

      源:InputStream  Reader

      目的:OutputStream  Writer

      先根据需求明确要读,还是要写。

    明确二:要操作的数据是字节还是文本?

      源:字节-InputStream  文本-Reader

      目的:字节-OutputStream  文本-Writer

    明确三:明确数据所在的具体设备?

      源设备:硬盘:文件  File 开头

          内存:数组  字符串

          键盘:System.in

          网络:Socket

      目的设备:硬盘:文件  File 开头

           内存:数组  字符串

           屏幕:System.out

           网络:Socket

      完全可以明白具体要使用哪个流对象

    明确四:是否需要额外功能?

      转换吗?转换流。InputStreamReader  OutputStreamWriter

      高效吗?缓冲区对象。BufferedXXX

    ● i/o 流体系结构

    InputStream

      FileInputStream

      BufferedInputStream

    OutputStream

      FileOutputStream

      BufferedOutputStream

    Writer

      OutputStreamWriter

        FileWriter

      BufferedWriter

    Reader

      InputStreamReader

        FileReader

      BufferedReader

    2、Properties 类

    ● 概述:Properties 类表示一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。

    ● 特点:1)Hashtable 的子类,map 集合中的方法都可以用。

          2)该集合没有泛型。键值对都是字符串。

          3)它是一个可持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化设备。

    3、序列化接口

      Serializable 标记接口。该接口给需要序列化的类,提供了一个序列化版本号。 serialVersionUID 该版本号中的目的在于验证序列化的对象和对应类是否版本匹配。

      一个对象要能被序列化,必须实现 Serializable 接口。否则会发生异常 NotSerializableException 异常。

      同时当反序列化对象时。如果对象所属的 class 文件在序列化之后进行修改,那么进行反序列化也会发生异常 InvalidClassException 。发生这个异常的原因如下:

      1)该类的序列化版本号与从流中读取的类描述符的版本号不匹配

      2)该类包含未知数据类型

      3)该类没有可访问的无参数构造方法

    注意:静态不能序列化。

    4、打印流

    ● 特点:1)此流不负责数据源,只负责数据目的

          2)为其他输出流添加功能

          3)永远不会抛出 IOException,但是,可能抛出别的异常

    ● PrintStream 和 PrintWriter 的异同

      同:两个打印流的方法完全一致

      异:printstream 构造方法,接收 File 类型,接收字符串文件名,接收字节输出流 OutputStream

        printwriter 构造方法,接收 File 类型,接收字符串文件名,接收字节输出流 OutputStream,接收字符输出流 Writer

    ● 打印流可以开启自动刷新功能

      满足两个条件:1)输出的数据目的必须是流对象:OutputStream,Writer

                2)必须调用 println,printf,format 三个方法中的一个,启动自动刷新

    注意:print(char[] x)打印结果不是哈希值,而是遍历后字符数组。其实是为打印 String 准备的

    第三方工具类 commons-io

  • 相关阅读:
    NYOJ 625 笨蛋的难题(二)
    NYOJ 102 次方求模
    ZJU Least Common Multiple
    ZJUOJ 1073 Round and Round We Go
    NYOJ 709 异形卵
    HDU 1279 验证角谷猜想
    BNUOJ 1015 信息战(一)——加密程序
    HDU 1202 The calculation of GPA
    "蓝桥杯“基础练习:字母图形
    "蓝桥杯“基础练习:数列特征
  • 原文地址:https://www.cnblogs.com/fanyizhan/p/10073341.html
Copyright © 2011-2022 走看看