Java中的IO流(四)
上一篇《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流(四)的更多相关文章
- Java中的IO流(五)
上一篇<Java中的IO流(四)>记录了一下Properties类,此类不属于IO流,它属于集合框架.接下来说一下IO流中的其它流 一,打印流PrintStream PrintStream ...
- Java中的IO流(六)
上一篇<Java中的IO流(五)>把流中的打印流PrintStream,PrintWriter,序列流SequenceInputStream以及结合之前所记录的知识点完成了文件的切割与文件 ...
- Java中的IO流(三)
上一篇<Java中的IO流(二)>把学习Java的字符流以及转换流作了一下记录,从本篇开始将把IO流中对文件或文件夹操作的对象File类的学习进行一下记录. 一,File类的构造函数及字段 ...
- Java中的IO流(二)
上一篇<Java中的IO流(一)>把学习IO流的字符流作了一下记录,本篇把字节流记录一下. 一,Java中的字节流 Java中的字节流的操作方式与字符流的操作方式大致相同,连方法名都是类似 ...
- Java中的IO流 - 入门篇
前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的IO流-入门篇>,希望对大家有帮助,谢谢 由于Java的IO类有很多,这就导致我刚开始学的时候,感觉很乱,每次用到都是上网搜,结果 ...
- java中的IO流
Java中的IO流 在之前的时候我已经接触过C#中的IO流,也就是说集中数据固化的方式之一,那么我们今天来说一下java中的IO流. 首先,我们学习IO流就是要对文件或目录进行一系列的操作,那么怎样操 ...
- Java中的IO流总结
Java中的IO流总结 1. 流的继承关系,以及字节流和字符流. 2. 节点流FileOutputStream和FileInputStream和处理流BufferedInputStream和Buffe ...
- Java中的IO流大体介绍
由于Java中的IO流是在是知识点繁多,所以我大约花了1周的时间将其整理起来.但是整理起来后并不是将完事了,我还是要分字节流和字符流来讲述.然后字节流和字符流中还有是否带有缓冲流. 讲述完IO流后我将 ...
- Java中的IO流,Input和Output的用法,字节流和字符流的区别
Java中的IO流:就是内存与设备之间的输入和输出操作就成为IO操作,也就是IO流.内存中的数据持久化到设备上-------->输出(Output).把 硬盘上的数据读取到内存中,这种操作 成为 ...
随机推荐
- 【转】JSON.parse()与JSON.stringify()的区别
JSON.parse()[从一个字符串中解析出json对象] 例子: //定义一个字符串 var data='{"name":"goatling"}' //解析 ...
- Scrapy框架的使用 -- 自动跳转链接并请求
# -*- coding: utf-8 -*- import scrapy from movie.items import MovieItem class MoviespiderSpider(scra ...
- log在无法调试代码时的妙用
1. 如果修改源代码 通过加入log打印日志 可以判断程序走的流程 找到需要自定义修改的位置(如修改java编写的项目 ApacheDS ) 2. 如果java调用dll文件 出错了 排错的方式也可以 ...
- [ZOJ1015]:Fishing Net
题面 Vjudge Sol 给出一个n个点的无向图,询问是否为弦图 做法见上上上篇博客 # include <bits/stdc++.h> # define RG register # d ...
- Regular Expression学习笔记
正则写法 var re = /a/;//简写 /.../里不能为空,因为会误以为是注释: var re = new RegExp('a'); 新建一个RegExp对象:和新建Array对象,Objec ...
- 54个提高PHP程序运行效率的方法(转载)
原文地址:http://www.jb51.net/article/69677.htm 1. 如果一个方法可静态化,就对它做静态声明.速率可提升至4倍. 2. echo 比 print 快. 3. 使用 ...
- Spring 框架(一)
1 spring框架概述 1.1 什么是spring l Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert ...
- The Willpower Instinct(自控力,意志力)
下面是我这几天在读斯坦福大学麦格尼格尔教授的<自控力>这本书的过程中摘抄的部分经典句子,发人深思!有助于帮助我们更好的了解自己. 00 导言:欢迎进入意志力入门 意志力:控制自己的注意力. ...
- RocketMQ读书笔记3——消费者
[不同类型的消费者] DefaultMQPushConsumer 由系统控制读取操作,收到消息后自动调用传入的处理方法来处理. DefaultMQPullConsumer 读取操作中的大部分功能由使用 ...
- Android 保存和恢复activity的状态数据
一般来说, 调用onPause()和onStop()方法后的activity实例仍然存在于内存中, activity的所有信息和状态数据不会消失, 当activity重新回到前台之后, 所有的改变都会 ...