• 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

  • 相关阅读:
    20162329张旭升 2017-2018-2 《程序设计与数据结构》第一周学习总结
    20162329 张旭升2016-2017《程序设计与数据结构》课程总结
    实验报告五
    20162329 张旭升 阶段四则运算(挑战出题)
    实验四:Android 开发基础
    四则运算的整体总结(第二周)
    结对编程四则运算(阶段总结)
    团队项目-选题报告
    第二次结对编程作业
    第一次结对编程作业
  • 原文地址:https://www.cnblogs.com/fanyizhan/p/10073341.html
Copyright © 2020-2023  润新知