上一篇《Java中的IO流(三)》把IO流中的文件及目录操作的对象File类记录了一下,本篇把本不属性IO流但又和IO流有关系的一个对象作一下记录,此对象本属于集合框架里的一个子集,即Properties类

  Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。之所以把这个类放在IO流中来记录,原因就是因为此类可保存在流中或从流中加载。

  先记录一下Properties集合的特点:

    1,集合中的键和值都是字符串类型

    2,集合中的数据可以保存在流中,或从流中加载

  通常该集合用于操作以键值对形式存储的配置文件

一,Properties的基本操作-存-取-改

     private static void propertiesDemo1() {
Properties prop = new Properties();
// 往Properties中存数据用setProperties
prop.setProperty("zw", "23");
prop.setProperty("ls", "21");
// 从Properties中取数据
Set<String> set = prop.stringPropertyNames();// 获取Properties集合中所有的键的集合
//循环读取键名合集中的所有键,然后用getProperty(键名)获取元素
for (String str : set) {
System.out.println(prop.getProperty(str));
}
//修改元素用setProperty("键名相同","值不同");
}

二,Properties的集合方法-list(PrintSteam out)

  此方法的作用是将Properties集合中所存储的内容输出到所指定的输出流,即输出到所传递到list方法的参数out流,这个方法对调试很有用

     private static void propertiesDemo2() {
Properties prop = new Properties();
// prop.setProperty("zw", "23");
// prop.setProperty("ls", "21");
prop = System.getProperties();// 获取系统的配置信息Properties集合
prop.list(System.out);
}

三,将集合中的内容持久化到文件中-store

  此方法有两个重载的版本,接收两个参数,第一个参数是流的类型;第二个参数是写信文件的注释信息,此注释信息不支持中文,若是中文则以\uxxxx的形式写入

     private static void propertiesDemo3() throws IOException {
Properties prop = System.getProperties();
FileWriter writer = new FileWriter("properties.properties");
prop.store(writer, "系统信息");
}

四,将文件中的信息读取到Properties集合中-load

  此文件中的信息必须是以键值对的形式存在的,此方法也有两个重载的版本,接收的参数流类型不一样

     private static void propertiesDemo4() throws IOException {
Properties prop = new Properties();
Reader reader = new FileReader("properties.properties");
prop.load(reader);//加载文件到集合中
prop.list(System.out);//把集合中的所有内容输出到控制台
}

五,将键值对的集合数据持久化成XML形式的文件-storeToXML

  此方法有两个重载的版本接收三个参数的版本可以指定编码格式  

     private static void propertiesDemo5() throws IOException {
Properties prop = System.getProperties();
OutputStream outputStream = new FileOutputStream("a.xml");
prop.storeToXML(outputStream, "这是一个XML文件", "utf-8");
}

六,将XMl类型的配置文件读取到集合中

   private static void propertiesDemo6() throws InvalidPropertiesFormatException, IOException {
Properties prop = new Properties();
InputStream inputStream = new FileInputStream("a.xml");
prop.loadFromXML(inputStream);
prop.list(System.out);
}

七,读取配置文件的信息并修改其中的内容然后存储该修改后的配置文件信息

     private static void propertiesDemo7() throws IOException {
Properties prop = new Properties();
File file = new File("properties.properties");
if (!file.exists()) {
file.createNewFile();
}
Reader reader = new FileReader(file);
prop.load(reader);
Set<String> set = prop.stringPropertyNames();
for (String str : set) {
if (str.equals("os.version")) {
prop.setProperty(str, "8.0");
}
}
prop.store(new FileWriter("properties.properties"), "new config");
}

八,模拟软件试用的功能,即试用五次,然后提示用户注册

     private static void propertiesDemo8() throws IOException {
File file = new File("config.properties");
if (!file.exists()) {
file.createNewFile();
}
Reader inputStream = new FileReader(file);
Properties properties = new Properties();
properties.load(inputStream);
Writer writer = new FileWriter(file);
String count = properties.getProperty("count");
try {
if (count == null || count.equals("")) {
properties.setProperty("count", "0");
properties.store(writer, "First time");
} else {
int countTemp = Integer.parseInt(count);
countTemp++;
properties.setProperty("count", String.valueOf(countTemp));
properties.store(writer, "new time ");
if (countTemp >= 5) {
throw new RuntimeException("试用次数已到,请注册");
} }
} catch (RuntimeException e) {
e.printStackTrace();
} finally {
inputStream.close();
writer.close();
}
}

Java中的IO流(四)的更多相关文章

  1. Java中的IO流(五)

    上一篇<Java中的IO流(四)>记录了一下Properties类,此类不属于IO流,它属于集合框架.接下来说一下IO流中的其它流 一,打印流PrintStream PrintStream ...

  2. Java中的IO流(六)

    上一篇<Java中的IO流(五)>把流中的打印流PrintStream,PrintWriter,序列流SequenceInputStream以及结合之前所记录的知识点完成了文件的切割与文件 ...

  3. Java中的IO流(三)

    上一篇<Java中的IO流(二)>把学习Java的字符流以及转换流作了一下记录,从本篇开始将把IO流中对文件或文件夹操作的对象File类的学习进行一下记录. 一,File类的构造函数及字段 ...

  4. Java中的IO流(二)

    上一篇<Java中的IO流(一)>把学习IO流的字符流作了一下记录,本篇把字节流记录一下. 一,Java中的字节流 Java中的字节流的操作方式与字符流的操作方式大致相同,连方法名都是类似 ...

  5. Java中的IO流 - 入门篇

    前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的IO流-入门篇>,希望对大家有帮助,谢谢 由于Java的IO类有很多,这就导致我刚开始学的时候,感觉很乱,每次用到都是上网搜,结果 ...

  6. java中的IO流

    Java中的IO流 在之前的时候我已经接触过C#中的IO流,也就是说集中数据固化的方式之一,那么我们今天来说一下java中的IO流. 首先,我们学习IO流就是要对文件或目录进行一系列的操作,那么怎样操 ...

  7. Java中的IO流总结

    Java中的IO流总结 1. 流的继承关系,以及字节流和字符流. 2. 节点流FileOutputStream和FileInputStream和处理流BufferedInputStream和Buffe ...

  8. Java中的IO流大体介绍

    由于Java中的IO流是在是知识点繁多,所以我大约花了1周的时间将其整理起来.但是整理起来后并不是将完事了,我还是要分字节流和字符流来讲述.然后字节流和字符流中还有是否带有缓冲流. 讲述完IO流后我将 ...

  9. Java中的IO流,Input和Output的用法,字节流和字符流的区别

    Java中的IO流:就是内存与设备之间的输入和输出操作就成为IO操作,也就是IO流.内存中的数据持久化到设备上-------->输出(Output).把 硬盘上的数据读取到内存中,这种操作 成为 ...

随机推荐

  1. BZOJ3498: PA2009 Cakes(三元环)

    题意 题目链接 Sol 按照套路把边转成无向图,我们采取的策略是从权值大的向权值小的连边 然后从按权值从小到大枚举每个点,再枚举他们连出去的点\(v\) 如果\(v\)的度数\(\leqslant M ...

  2. Java基础学习总结一(Java语言发展历史、JDK下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有“01”构成,最早 ...

  3. 【Machine Learning】分类与回归 区别

    一.分类与回归的区别 两类监督学习 Classification Regression 分类和回归的区别在于输出变量的类型(而非输入变量). 定性输出称为分类,或者说是离散变量预测(discrete) ...

  4. python的继承多态以及异常处理

    1.单继承 # 动物类 class Animal(object): def __init__(self, name): self. __name = name def run(self): print ...

  5. ubuntu配置(娱乐工作)

    因为目前没有使用ubuntu作为工作的电脑(mac还是好用),所以暂时记录一下别人分享的ubuntu常用软件: 输入法:搜狗输入法 虚拟机:virtualbox 浏览器:chromium ide:id ...

  6. html的文件控件<input type="file">样式的改变

    一直以来,<input type="file">上传文件标签默认样式都是让人不爽的,使用它多要给它整整容什么的,当然如果用ui插件还比较方便,不能就自己来操刀实践一下! ...

  7. Angular2 备忘

    ng serve --port 80 --disable-host-check  启动80端口,禁用host检查 要在 component 内绑定全局事件的话,可以使用 @HostListener, ...

  8. configure编译,显示错误不合法的选项空

    解决: 注释的问题,讲注释重启起一行,或者取消掉就可以了 不要在反斜杠后面在写任何东西,他会把你写的东西当作新的一行的输入内容的

  9. SAPGUI系统登录页面配置的SAProuter有什么用

    大家在安装完SAPGUI后,准备添加系统列表进行登录时,注意过这个SAProuter字段么? 从SAP的帮助文档上可以找到SAProuter的定义: https://help.sap.com/saph ...

  10. Wifi密码破解

    Wifi密码破解1:通过字典(暴力)破解WIFI密码   简单破解WEP/WPA/WPA2加密的WIFI密码,平台kali-linux 工具:Aircrack-ng 过程很简单:先抓含有正确密码的握手 ...