2020-06-19Java入门(二十五)properties集合 缓冲流 转换流 序列化流 打印流

properties  load sort get set

/**

* properties 集合继承了hashtable

* 类 表示一个持久的属性集 可保存在流中或从流中加载

* 此集合是唯一一个和IO流相结合的集合

* sort把集合中的临时数据 持久化到硬盘中存储

* load

*

* 键值默认是字符串 使用集合来保存数据

* properties 集合 双列集合

*/

public class Properties {

public static void main(String[] args)throws IOException {

//show01();

//sort();

        show03();

}

private static void show03()throws IOException{

java.util.Properties properties =new java.util.Properties();

//使用setProperties 往集合中添加数据

        properties.setProperty("周一","162");

properties.setProperty("周二","162");

properties.setProperty("周三","162");

//读取保存键值对的文件 load方法

        properties.load(new FileReader("F:\\ideawork\\a.txt"));

//遍历集合

        Set set = properties.stringPropertyNames();

for (String s : set) {

String property = properties.getProperty(s);

System.out.println(s+"="+property);

}

}

private static void sort()throws IOException {

//in thread "main" java.io.FileNotFoundException: C:\ideawork\properties.txt (系统找不到指定的路径。)

        java.util.Properties properties =new java.util.Properties();

//使用setProperties 往集合中添加数据

        properties.setProperty("周一","162");

properties.setProperty("周二","162");

properties.setProperty("周三","162");

//创建字节输出流 字符输出流对象 构造方法中绑定要输出的目的地

        FileWriter fileWriter =new FileWriter("F:\\ideawork\\a.txt");

//properties集合中store方法 把集合中的临时数据 持久化存储到硬盘中存储

        properties.store(fileWriter,"save");

fileWriter.close();

}

/**

    * 使用集合 存储数据 遍历 取出

    * properties集合 默认都是字符串 操作字符串特有方法 setproperties

    * getProperties key-value(相当于map集合中的get)

*/

    private static void show01() {

//创建集合对象

        //Properties properties = new Properties();注意要是工具类

        java.util.Properties properties =new java.util.Properties();

//使用setProperties 往集合中添加数据

        properties.setProperty("周一","162");

properties.setProperty("周二","162");

properties.setProperty("周三","162");

//System.out.println(properties);

        //键值取出 存储到set集合中

        Set set = properties.stringPropertyNames();

for (String s : set) {

//String property = properties.getProperty(s);

//System.out.println(property);

// System.out.println(s);

        }

}

}


缓冲流 字节缓冲输出 字节缓冲输入

字符缓冲输出输入 readline (map集合的地方有一个错误 不知道为什么对报异常 但是debug的是有是有值得)

/**

* 文本内容进行排序

* 分析 应该如何进行分析 没有头绪

* 首先文本应该是有段落的吧都标有序号

* 可以创建一个hashMap集合对象  存储序号 和文本

* 创建readline 有关的 字符流输入 因为可以逐行读取 用到缓冲区最好 提高速率

* hashmap自动排序

* 每一个键值对 拼接为一个文本行 写入到文件中 释放资源

*/

public class Map {

public static void main(String[] args)throws IOException {

HashMap hashMap =new HashMap<>();

BufferedWriter bufferedWriter =new BufferedWriter(new FileWriter("F:\\ideawork\\a,txt"));

BufferedReader bufferedReader =new BufferedReader(new FileReader("F:\\ideawork\\a.txt"));

String line;

while ((line=bufferedReader.readLine())!=null){

//对原来的文本进行切割 想一下 用什么方式可以拿到

            String[] arr = line.split("\\.");

//把切割好的文本放在hashmap集合中

          /* hashMap.get(split);*/

            //出现了异常ArrayIndexOutOfBoundsException: 10

            //序号是有序的会自动排序 但是为什么会有错 debug都可以正常

            hashMap.put(arr[0],arr[1]);

}

//遍历

        for (String key:hashMap.keySet()){

String value = hashMap.get(key);

line=key+"->"+value;

bufferedWriter.write(line);

bufferedWriter.newLine();

System.out.println(key+"-->"+value);

//System.out.println(key);

        }

bufferedWriter.close();

bufferedReader.close();

}

}


转换流

import java.io.*;

/**

* 转换流

* 字符编码(编码 解码)与二进制数之间的对应规则  字符集

* 指定了编码 字符集也会指定

* 字符集

* ascii码表 最基本 正数128 iso-8859-1 兼容ascii码表 GB2312 简体中文码表 两个字节存储一个中文

* GBK双字节编码 繁体 日韩 常用的编码  GB18030最新的中文码表  多字节编码

* 默认的码表GBK

* Unicode字符集 标准万国码 UTF-8采用的优先编码 web开发 idea默认UTF-8 三个字节存储一个中文

*/

public class Turn {

public static void main(String[] args)throws IOException {

/**

        * filereader 读取idea 默认编码UTF-8的文件

        * FileReader 读取系统的默认编码GBK

        * 硬盘文件 以字节存储

        */

        FileReader fileReader =new FileReader("F:\\ideawork\\aaa.txt");

int len=0;

while ((len=fileReader.read())!=-1){

//System.out.println((char)len);// 乱码的信息

        }

//fileReader.close();

        //当我们新建文本时 就会有系统默认的编码是GBK FileReader 读到的信息就会乱码

        //menthod();

//inputStream();

        gbk();

}

/**

    * GBK 中文码表  两个字节存储一个中文

    * UTF-8 国际标准码表 三个字节存储一个中文 编码不一样 占用的大小不一样 (char)

    * FileInputStream 字节输入流

    */

/**

    * OutputStreamWriter 创建字符编码

    * OutputStreamWriter 指定编码表的名称

    */

/* public static void menthod()throws IOException{

        //创建指定字符集OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream("F:\\ideawork\\aaa.txt"),"utf-8");

        //不指定编码 也可以正常打印OutputStreamWriter outputStreamWriter1 = new OutputStreamWriter(new FileOutputStream("F:\\ideawork\\aaa.txt"));

        //gbk 必须指定编码表 大小写都可以        outputStreamWriter.write("你是谁");

        outputStreamWriter.close();// 打印的你是谁        outputStreamWriter1.write("你还好吗");

outputStreamWriter1.close();

}

*/

/**

    * 默认字符集 指定字符集

    * inputStream 字节输入流 用来读取文件中保存的字节

    *

    * GBK 编码格式的文件 需指定GBK格式的编码

    */

    public static void inputStream()throws IOException{

//指定不指定编码格式都可以

        InputStreamReader inputStreamReader =new InputStreamReader(new FileInputStream("F:\\ideawork\\aaa.txt"));

int len=0;

while ((len=inputStreamReader.read())!=-1){

System.out.println((char)len);//正确输出文字内容

        }

inputStreamReader.close();

}

/**

    * GBK 编码格式的文件 需指定GBK格式的编码

    * 没有指定编码格式 就会出现乱码的情况 也不能指定UTF-8的编码格式

    * @throws IOException

*/

    public static void gbk()throws IOException{

//指定不指定编码格式都可以

        InputStreamReader inputStreamReader =new InputStreamReader(new FileInputStream("F:\\ideawork\\dianbiao.txt"));

int len=0;

while ((len=inputStreamReader.read())!=-1){

System.out.println((char)len);//正确输出文字内容

        }

inputStreamReader.close();

}

}


转换文件编码

public class Test {

public static void main(String[] args)throws IOException {

/**

        * 练习  转换文件编码 将GBK 编码的文本 转换为UTF-8编码的文本文件

        * 创建 读 GBK文本

        * 创建写 字节输出流

        */

        InputStreamReader gbk =new InputStreamReader(new FileInputStream("F:\\ideawork\\nihao.txt"),"gbk");

OutputStreamWriter outputStreamWriter =new OutputStreamWriter(new FileOutputStream("F:\\ideawork\\dianbiao.txt"),"utf-8");

//线读取文件

        int len=0;

while ((len=gbk.read())!=-1){

System.out.println((char)len);

outputStreamWriter.write(len);

}

outputStreamWriter.close();

gbk.close();

}

}


序列化流

序列化的集合

打印流

你可能感兴趣的:(2020-06-19Java入门(二十五)properties集合 缓冲流 转换流 序列化流 打印流)