标签:properties io javase
集合中的数据都存储在内存中。
java.lang.Object
java.util.Dictionary<K,V>
java.util.Hashtable<Object,Object>
java.util.Properties
Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。
字段摘要 |
|
protected Properties |
defaults |
构造方法摘要 |
|
Properties() |
|
Properties(Properties defaults) |
|
方法摘要 |
|
getProperty(String key) |
|
getProperty(String key, String defaultValue) |
|
void |
list(PrintStream out) |
void |
list(PrintWriter out) |
void |
load(InputStream inStream) |
void |
|
void |
loadFromXML(InputStream in) |
Enumeration<?> |
propertyNames() |
void |
save(OutputStream out, String comments) |
setProperty(String key, String value) |
|
void |
store(OutputStream out, String comments) |
void |
store(Writer writer, String comments) |
void |
storeToXML(OutputStream os, String comment) |
void |
storeToXML(OutputStream os, String comment, String encoding) |
stringPropertyNames() |
package cn.test.properties;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;
import java.util.Set;
public class PropertiesDemo {
public static void main(String[] args) throws FileNotFoundException, IOException {
/**
* Properties的特点:
* 1:该集合中的键和值都是字符串类型
* 2:集合中的数据可以保存到流中,或者从流中获取
* 该集合通常用于操作以键值对形式存在的配置文件
* 配置文件:就是存储信息的文件,只是这些信息用于程序的初始化
*/
//propertiesDemo();
//methodDemo();
//store();
read();
}
/**
* Properties集合的存和取
*
*/
public static void propertiesDemo(){
//创建一个properties集合
Properties prop = new Properties();
prop.setProperty("zhangsan", "20");
prop.setProperty("zhangsan1", "21");
prop.setProperty("zhangsan2", "22");
prop.setProperty("zhangsan3", "23");
//修改元素的值 键相同,值覆盖
prop.setProperty("zhangsan", "26");
//取出所有元素
Set<String> names = prop.stringPropertyNames();
//遍历集合
for (String name : names) {
String value = prop.getProperty(name);
System.out.println(name +" "+value);
}
}
/**
* 演示Properties集合与流对象的结合
* list 此方法用于调试程序
*/
private static void methodDemo() {
//创建一个properties集合
Properties prop = new Properties();
prop.setProperty("zhangsan", "20");
prop.setProperty("zhangsan1", "21");
prop.setProperty("zhangsan2", "22");
prop.setProperty("zhangsan3", "23");
//获取系统信息
prop =System.getProperties();
prop.list(System.out);
}
/**
* Properties数据持久化存储
* void store(OutputStream out, String comments)
以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。
void store(Writer writer, String comments)
以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。
void storeToXML(OutputStream os, String comment)
发出一个表示此表中包含的所有属性的 XML 文档。
void storeToXML(OutputStream os, String comment, String encoding)
使用指定的编码发出一个表示此表中包含的所有属性的 XML 文档。
* @throws FileNotFoundException
*/
public static void store() throws FileNotFoundException,IOException{
//创建一个properties集合
Properties prop = new Properties();
prop.setProperty("zhangsan", "20");
prop.setProperty("zhangsan1", "21");
prop.setProperty("zhangsan2", "22");
prop.setProperty("zhangsan3", "23");
//将信息持久化存储
FileOutputStream fos = new FileOutputStream("aaaa.txt");
prop.store(fos, "name+age");
fos.close();
}
/**
* 从文件中读取数据
* @throws FileNotFoundException
*/
public static void read() throws FileNotFoundException,IOException{
Properties prop = new Properties();
//集合中的数据来自于文件
//必须保证文件中的数据时键值对
FileInputStream fis = new FileInputStream("aaaa.txt");
//加载数据到流中
prop.load(fis);
prop.list(System.out);
}
//load原理
public static void load() throws IOException{
Properties prop = new Properties();
BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));
String line = null;
while((line = bufr.readLine()) !=null){
if(line.startsWith("#")){
continue;
}
String[] arr =line.split("=");
System.out.print(arr[0] +"::"+arr[1]);
prop.setProperty(arr[0], arr[1]);
}
prop.list(System.out);
bufr.close();
}
//修改文件中的值
/**
* 读取文件
* 将文件中的键值对存储到集合中
* 在集合中进行修改
* 然后写回到文件中
*
*/
public static void update() throws FileNotFoundException,IOException{
Properties prop = new Properties();
File file = new File("aaaa.txt");
if(!file.exists()){
file.createNewFile();
}
FileReader fr = new FileReader(file);
prop.load(fr);
prop.setProperty("zhangsan", "91");
//文件的读写尽量在需要的时候在操作。
FileWriter fw = new FileWriter(file);
prop.store(fw, "info");
fw.close();
fr.close();
}
}
标签:properties io javase
原文地址:http://blog.csdn.net/ning_xian_hong/article/details/45746551