JavaIo学习Properties



集合中的数据都存储在内存中。

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)

创建一个带有指定默认值的空属性列表。


方法摘要


String


getProperty(String key)

用指定的键在此属性列表中搜索属性。


String


getProperty(String key, String defaultValue)

用指定的键在属性列表中搜索属性。


void


list(PrintStream out)

将属性列表输出到指定的输出流。


void


list(PrintWriter out)

将属性列表输出到指定的输出流。


void


load(InputStream inStream)

从输入流中读取属性列表(键和元素对)。


void


load(Reader reader)

按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。


void


loadFromXML(InputStream in)

将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。


Enumeration<?>


propertyNames()

返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键。


void


save(OutputStream out, String comments)

已过时。 如果在保存属性列表时发生 I/O 错误,则此方法不抛出 IOException。保存属性列表的首选方法是通过 store(OutputStream out, String comments) 方法或 storeToXML(OutputStream os, String comment) 方法来进行。


Object


setProperty(String key, String value)

调用 Hashtable 的方法 put。


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 文档。


Set<String>


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

}

}

时间: 2024-10-03 22:33:03

JavaIo学习Properties的相关文章

JavaIO学习总结一

Java IO 输入输出 一.概念 Java中输入输出操作是以流的方式进行的,流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.控制台.网络)读入到内存中,形成了流,然后将这些流还可以写到另外的目的地(文件.内存.控制台.网络). 之所以称为流,是因为这个数据序列在不同时刻所操作的是源的不同部分. 二.分类 1.按照输入的方向分,输入流和输出流,输入输出的参照对象是Java程序. 2.按照处理数据的单位不同分,字节流和字符流,字节流读取的最小单位是一个字节(1byte=8bi

JavaIO学习之File类

 File类 作用: 1.用来将文件或者文件夹封装成对象. 2.方便对文件与文件夹的属性进行操作. 3.File对象可以作为参数传递给流的构造函数. IO流的流对象只能操作设备上的数据. 文件属性的操作和文件夹的创建,删除由File类完成. File类 字段摘要 static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串. static char pathSeparatorChar 与系统有关的路径分隔符. static String se

java-IO学习

之前一直没去学过IO,现在要写上传下载,必须得看了. File类 public class FileTest{ public static void main(String[] args) throws IOException { // 以当前路径来创建一个File对象//新建一个file的对象,这个对象,代表的是一个路径,"."是当前目录的相对路径. //File类,使用文件路径字符串来创建File实例,该字符串可以是绝对路径,也可以是相对路径 File file = new Fil

JavaIO学习:打印流

打印流 打印流是输出信息最方便的类,注意包含字节打印流:PrintStream和字符打印流:PrintWriter. 打印流提供了非常方便的打印功能,可以打印任何类型的数据信息,例如:小数,整数,字符串. 回顾: 之前打印信息需要使用OutputStream但是这样,所有数据输出会非常麻烦,String-->byte[],打印流中可以方便进行输出, 打印流好处 通过定义的构造方法可以发现,有一个构造方法可以直接接收OutputStream类的实例,与OutputStream相比起来,PrintS

转载:java基础学习总结——java读取properties文件总结

java基础学习总结--java读取properties文件总结 一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResourceAsStream方法和InputStream流去读取properties文件,使用getResourceAsStream方法去读取properties文件时需要特别注意properties文件路径的写法,测试项目如下: 1.1.项目的

Swift学习笔记(13)--属性 (Properties)

普通属性用var和let即可,本文不做详述 1.延迟存储属性 延迟存储属性是指当第一次被调用的时候才会计算其初始值的属性.在属性声明前使用@lazy来标示一个延迟存储属性. class DataImporter { /* DataImporter 是一个将外部文件中的数据导入的类. 这个类的初始化会消耗不少时间. */ var fileName = "data.txt" // 这是提供数据导入功能 } class DataManager { @lazy var importer = D

java.util.Properties类 学习笔记

学习目标: 1.认识properties文件,理解其含义,会正确创建properties文件. 2.会使用java.util.Properties类来操作properties文件. 3.掌握相对路径,能正确书写一个properties文件的相对路径. 一.认识properties文件 1.properties文件是一个文本文件 2.properties文件的语法有两种,一种是注释,一种属性配置. 注    释:前面加上#号 属性配置:以“键=值”的方式书写一个属性的配置信息. 3.propert

springboot学习总结(一)外部配置(命令行参数配置、常规属性配置、类型安全的配置之基于properties)

学习的内容主要是汪云飞的<Spring Boot实战> (一)命令行参数配置 springboot项目可以基于jar包运行,打开jar的程序可以通过下面命令行运行: java -jar xxx.jar 可以通过以下命令修改tomcat端口号 java -jar xxx.jar --server.port=9090 (二)常规属性配置 在springboot项目中,我们只需在application.properties定义属性,直接使用@Value注入即可 (1)application.prop

SpringBoot学习:读取yml和properties文件的内容

一.在SpringBoot实现属性注入: 1).添加pom依赖jar包: 1 <!-- 支持 @ConfigurationProperties 注解 --> 2 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-configuration-processor --> 3 <dependency> 4 <groupId>org.springframework