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

properties  load sort get set

/**

* properties 集合继承了hashtable

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

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

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

* load

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

* 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();

}

}


序列化流

序列化的集合

打印流

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343