zoukankan      html  css  js  c++  java
  • 转换流 Properties集合 序列化 工具

    今日内容介绍
    1、转换流
    2、缓冲流
    3、Properties集合
    4、序列化流与反序列化流
    5、commons-IO
    ===========================================================
    1 转换流概述
    OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节
    将字符串按照指定的编码表转成字节,在使用字节流将这些字节写出去

    2 OutputStreamWriter写文本文件
    步骤 OutputStreamWriter
    * java.io.OutputStreamWriter 继承Writer类
    * 就是一个字符输出流,写文本文件
    * write()字符,字符数组,字符串
    * 字符通向字节的桥梁,将字符流转字节流
    * OutputStreamWriter 使用方式
    * OutputStreamWriter(OuputStream out)接收所有的字节输出流
    * 字节输出流: FileOutputStream
    * OutputStreamWriter(OutputStream out, String charsetName)
    * String charsetName 传递编码表名字 GBK UTF-8
    * OutputStreamWriter 有个子类, FileWriter
    3 转换流_字节转字符流过程
    3.1InputStreamReader
    * java.io.InputStreamReader 继承 Reader
    * 字符输入流,读取文本文件
    * 字节流向字符的敲了,将字节流转字符流
    * 读取的方法:
    * read() 读取1个字符,读取字符数组
    * 技巧
    * OuputStreamWriter写了文件
    * InputStreamReader读取文件
    * OutputStreamWriter(OutputStream out)所有字节输出流
    * InputStreamReader(InputStream in) 接收所有的字节输入流
    * 可以传递的字节输入流: FileInputStream
    * InputStreamReader(InputStream in,String charsetName) 传递编码表的名字
    3.2 InputSteamReader读取文本文件

    4 转换流子类父类
    a: 继承关系
    OutputStreamWriter:
    |--FileWriter:
    InputStreamReader:
    |--FileReader;


    5 缓冲流概述
    * 可提高IO流的读写速度
    * 分为字节缓冲流与字符缓冲流
    6 字节输出流缓冲流BufferedOutputStream
    * 字节输出流的缓冲流
    * java.io.BufferedOuputStream 作用: 提高原有输出流的写入效率
    * BufferedOuputStream 继承 OutputStream
    * 方法,写入 write 字节,字节数组
    * 构造方法:
    * BufferedOuputStream(OuputStream out)
    * 可以传递任意的字节输出流, 传递的是哪个字节流,就对哪个字节流提高效率
    7 字节输入流缓冲流BufferedInputStream
    * 字节输入流的缓冲流
    * 继承InputStream,标准的字节输入流
    * 读取方法 read() 单个字节,字节数组
    * 构造方法:
    * BufferedInputStream(InputStream in)
    * 可以传递任意的字节输入流,传递是谁,就提高谁的效率
    * 可以传递的字节输入流 FileInputStream
    8 四种文件复制方式的效率比较
    * a: 四中复制方式
    * 字节流读写单个字节
    * 字节流读写字节数组
    * 字节流缓冲区流读写单个字节
    * 字节流缓冲区流读写字节数组

    9 字符输出流缓冲流BufferedWriter
    * 字符输出流缓冲区流
    * java.io.BufferedWriter 继承 Writer
    * 写入方法 write () 单个字符,字符数组,字符串

    * 构造方法:
    * BufferedWriter(Writer w)传递任意字符输出流
    * 传递谁,就高效谁
    * 能传递的字符输出流 FileWriter, OutputStreamWriter

    10 字符输出流缓冲流BufferedWriter特有方法newLine
    10.1: 方法介绍
    * void newLine() 写换行

    * newLine()文本中换行, 也是文本换行
    * 方法具有平台无关性
    * Windows
    * Linux

    * newLine()运行结果,和操作系统是相互关系
    * JVM: 安装的是Windows版本,newLine()写的就是
    * 安装的是Linux版本,newLine()写的就是
    /*
    * 将数据源 c:\a.txt
    * 复制到 d:\a.txt 数据目的
    * 字节输入流,绑定数据源
    * 字节输出流,绑定数据目的
    *
    * 输入,读取1个字节
    * 输出,写1个字节
    */

    11 字符输入流缓冲流BufferedReader
    概念
    * 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取
    * public String readLine() 读取一个文本行,包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

    12 字符输入流缓冲流BufferedReader读取文本行
    * 字符输入流缓冲流
    * java.io.BufferedReader 继承 Reader
    * 读取功能 read() 单个字符,字符数组
    * 构造方法:
    * BufferedReader(Reader r)
    * 可以任意的字符输入流
    FileReader InputStreamReader
    * BufferedReader自己的功能
    * String readLine() 读取文本行
    * 方法读取到流末尾,返回null

    13 字符流缓冲区流复制文本文件
    /*
    * 使用缓冲区流对象,复制文本文件
    * 数据源 BufferedReader+FileReader 读取
    * 数据目的 BufferedWriter+FileWriter 写入
    * 读取文本行, 读一行,写一行,写换行
    */

    14 IO流对象的操作规律
    * A: IO流对象的操作规律
    * a: 明确一:要操作的数据是数据源还是数据目的。
    * 源:InputStream Reader
    * 目的:OutputStream Writer
    * 先根据需求明确要读,还是要写。

    * b: 明确二:要操作的数据是字节还是文本呢?
    * 源:
    * 字节:InputStream
    * 文本:Reader
    * 目的:
    * 字节:OutputStream
    * 文本:Writer
    * c: 明确三:明确数据所在的具体设备。
    * 源设备:
    * 硬盘:文件 File开头。
    * 内存:数组,字符串。
    * 键盘:System.in;
    * 网络:Socket
    * 目的设备:
    * 硬盘:文件 File开头。
    * 内存:数组,字符串。
    * 屏幕:System.out
    * 网络:Socket
    * 完全可以明确具体要使用哪个流对象。
    * d: 明确四:是否需要额外功能呢?
    * 额外功能:
    * 转换吗?转换流。InputStreamReader OutputStreamWriter
    * 高效吗?缓冲区对象。BufferedXXX
    * 已经明确到了具体的体系上。

    17 Properties集合的特点
    17.1: Properties类介绍
    * Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串
    17.2: 特点
    * Hashtable的子类,map集合中的方法都可以用。
    * 该集合没有泛型。键值都是字符串。
    * 它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。
    * 有和流技术相结合的方法。
    17.3: 方法介绍
    * load(InputStream inputStream) 把指定流所对应的文件中的数据,读取出来,保存到Propertie集合中
    * load(Reader reader) 按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)
    * store(OutputStream outputStream,String commonts) 把集合中的数据,保存到指定的流所对应的文件中,参数commonts代表对描述信息
    * stroe(Writer writer,String comments) 以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符
    18、Properties集合存储键值对
    * 集合对象Properties类,继承Hashtable,实现Map接口
    * 可以和IO对象结合使用,实现数据的持久存储
    * 使用Properties集合,存储键值对
    * setProperty等同与Map接口中的put
    * setProperty(String key, String value)
    * 通过键获取值, getProperty(String key)

    19 Properties集合的方法load
    19.1 方法介绍
    * Properties集合特有方法 load
    * load(InputStream in)
    * load(Reader r)
    * 传递任意的字节或者字符输入流
    * 流对象读取文件中的键值对,保存到集合
    20 Properties集合的方法store
    20.1方法介绍
    * Properties集合的特有方法store
    * store(OutputStream out)
    * store(Writer w)
    * 接收所有的字节或者字符的输出流,将集合中的键值对,写回文件中保存

    21 对象的序列化与反序列化
    概念
    * 对象的序列化
    * 对象中的数据,以流的形式,写入到文件中保存过程称为写出对象,对象的序列化
    * ObjectOutputStream将对象写道文件中,实现序列化
    * 对象的反序列化
    * 在文件中,以流的形式,将对象读出来,读取对象,对象的反序列化
    * ObjectInputStream 将文件对象读取出来

    22 ObjectOutputStream流写对象
    简单介绍
    * IO流对象,实现对象Person序列化,和反序列化
    * ObjectOutputStream 写对象,实现序列化
    * ObjectInputStream 读取对象,实现反序列化


    23ObjectInputStream流读取对象
    简单介绍
    * ObjectInputStream
    * 构造方法:ObjectInputStream(InputStream in)
    * 传递任意的字节输入流,输入流封装文件,必须是序列化的文件
    * Object readObject() 读取对象

    注意 静态不能序列化
    原因
    * 序列化是把对象数据进行持久化存储
    * 静态的东西不属于对象,而属于类

    24 commons-io工具类介绍

    工具类介绍
    * 解压缩commons-io-2.4.zip文件
    * commons-io-2.4.jar需要导入到项目中的jar包,里面存放的是class文件
    * commons-io-2.4-sources.jar工具类中原代码
    * docs是帮助文档

    24 使用工具类commons_io
    24.1: 导入jar包
    * 加入classpath的第三方jar包内的class文件才能在项目中使用
    * 创建lib文件夹
    * 将commons-io.jar拷贝到lib文件夹
    * 右键点击commons-io.jar,Build Path→Add to Build Path

    25 IO工具类FilenameUtils
    方法介绍
    * getExtension(String path):获取文件的扩展名;
    * getName():获取文件名;
    * isExtension(String fileName,String ext):判断fileName是否是ext后缀名;

    26 IO工具类FileUtils
    方法介绍
    * readFileToString(File file):读取文件内容,并返回一个String;
    * writeStringToFile(File file,String content):将内容content写入到file中;
    * copyDirectoryToDirectory(File srcDir,File destDir);文件夹复制
    * copyFile(File srcFile,File destFile);文件复制


  • 相关阅读:
    看云学习文档列表
    linux&&ubutun 21.06使用查询资料
    element-admin 查询资料笔记
    tp6 composer install 报Your requirements could not be resolved to an installable set of packages。
    centos 7 install npm
    centos 7 dev
    解決npm run dev 报: 'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件 错误
    解決vue-cli · Failed to download repo vuejs-templates/webpack: tunneling socket could not be established, cause=getaddrinfo ENOTFOUND 10809报错问题
    Linux创建命令快捷方式
    JS 闭包写法
  • 原文地址:https://www.cnblogs.com/lijun6/p/10398278.html
Copyright © 2011-2022 走看看