当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java Properties用法及代码示例


Properties 类代表一组持久的属性。属性可以保存到流中或从流中加载。它属于java.util包。属性定义以下实例变量。该变量保存与 Properties 对象关联的默认属性列表。

Properties defaults: This variable holds a default property list associated with a Properties object.
 

Properties类的特点:

  • 属性是一个子类哈希表.
  • 它用于维护一个值列表,其中键是字符串,值也是字符串,即;它可用于在属性文件中存储和检索字符串类型数据。
  • Properties 类可以指定其他属性列表,因为它是默认的。如果原始属性列表中不存在特定的关键属性,则将搜索默认属性。
  • Properties 对象不需要外部同步,多个线程可以共享单个 Properties 对象。
  • 此外,它还可用于检索系统的属性。

优点 属性文件

如果属性记录中的任何数据发生更改,则无需重新编译 java 类。它用于存储需要经常更改的数据。

注意:Properties 类没有从其超类继承负载因子的概念,哈希表.

声明

public class Properties extends Hashtable<Object,Object>

属性的构造函数

1. Properties():这将创建一个没有默认值的 Properties 对象。

Properties p = new Properties();

2. Properties(Properties propDefault):第二个创建一个使用 propDefault 作为默认值的对象。

Properties p = new Properties(Properties propDefault);

示例 1:下面的程序展示了如何使用Properties类从属性文件中获取信息。

让我们创建一个属性文件并将其命名为 db.properties。

db.properties

username = coder
password = geeksforgeeks

代码

Java


// Java program to demonstrate Properties class to get 
// information from the properties file 
  
import java.util.*; 
import java.io.*; 
public class GFG { 
    public static void main(String[] args) throws Exception 
    { 
        // create a reader object on the properties file 
        FileReader reader = new FileReader("db.properties"); 
  
        // create properties object 
        Properties p = new Properties(); 
  
        // Add a wrapper around reader object 
        p.load(reader); 
  
        // access properties data 
        System.out.println(p.getProperty("username")); 
        System.out.println(p.getProperty("password")); 
    } 
}

输出

print properties of a file

示例 2:下面的程序展示了如何使用Properties类来获取所有系统属性。使用System.getProperties()方法,我们可以获取系统的所有属性。

Java


// Java program to demonstrate Properties class to get all 
// the system properties 
  
import java.util.*; 
import java.io.*; 
  
public class GFG { 
    public static void main(String[] args) throws Exception 
    { 
        // get all the system properties 
        Properties p = System.getProperties(); 
  
        // stores set of properties information 
        Set set = p.entrySet(); 
  
        // iterate over the set 
        Iterator itr = set.iterator(); 
        while (itr.hasNext()) { 
  
            // print each property 
            Map.Entry entry = (Map.Entry)itr.next(); 
            System.out.println(entry.getKey() + " = "
                               + entry.getValue()); 
        } 
    } 
}

输出

get all the system properties

示例 3:下面的程序展示了如何使用Properties类来创建属性文件。

Java


// Java program to demonstrate Properties class to create 
// the properties file 
  
import java.util.*; 
import java.io.*; 
  
public class GFG { 
    public static void main(String[] args) throws Exception 
    { 
        // create an instance of Properties 
        Properties p = new Properties(); 
  
        // add properties to it 
        p.setProperty("name", "Ganesh Chowdhary Sadanala"); 
        p.setProperty("email", 
                      "ganeshs.gfg@gmail.com"); 
  
        // store the properties to a file 
        p.store(new FileWriter("info.properties"), 
                "GeeksforGeeks Properties Example"); 
    } 
}

输出

use Properties class to create a properties file.

属性方法

METHOD

DESCRIPTION

getProperty(String key) 在此属性列表中搜索具有指定键的属性。
getProperty(String key, String defaultValue) 在此属性列表中搜索具有指定键的属性。
list(PrintStream out) 将此属性列表打印到指定的输出流。
Properties list(PrintWriter) 将此属性列表打印到指定的输出流。
load(InputStream inStream) 从输入字节流中读取属性列表(键和元素对)。
load(Reader reader) 以简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。
loadFromXML(InputStream in) 将指定输入流上的 XML 文档表示的所有属性加载到此属性表中。
propertyNames() 返回此属性列表中所有键的枚举,如果尚未从主属性列表中找到同名键,则包括默认属性列表中的不同键。
save(OutputStream out, String comments)

已弃用.

如果保存属性列表时发生 I/O 错误,此方法不会引发 IOException。

setProperty(String key, String value) 调用 Hashtable 方法 put。
store(OutputStream out, String comments) 将此 Properties 表中的属性列表(键和元素对)以适合使用 load(InputStream) 方法加载到 Properties 表中的格式写入输出流。
store(Writer writer, String comments) 将此属性表中的属性列表(键和元素对)以适合使用 load(Reader) 方法的格式写入输出字符流。
storeToXML(OutputStream os, String comment) 发出一个 XML 文档,表示该表中包含的所有属性。
storeToXML(OutputStream os, String comment, String encoding) 使用指定的编码发出表示此表中包含的所有属性的 XML 文档。
storeToXML(OutputStream os, String comment, Charset charset) 使用指定的编码发出表示此表中包含的所有属性的 XML 文档。
stringPropertyNames() 从此属性列表中返回一组不可修改的键,其中键及其对应的值是字符串,如果尚未从主属性列表中找到同名的键,则包括默认属性列表中的不同键。

类 java.util.Hashtable 中声明的方法

METHOD

DESCRIPTION

clear() 清除此哈希表,使其不包含键。
clone() 创建此哈希表的浅拷贝。
计算(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) 尝试计算指定键及其当前映射值的映射(如果没有当前映射,则为 null)。
computeIfAbsent(K key, Function<? super K,? 扩展 V> 映射函数) 如果指定的键尚未与值关联(或映射为 null),则尝试使用给定的映射函数计算其值并将其输入到此映射中,除非 null。
computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) 如果指定键的值存在且非空,则尝试在给定键及其当前映射值的情况下计算新映射。
contains(Object value) 测试某些键是否映射到此哈希表中的指定值。
containsKey(Object key) 测试指定的对象是否是此哈希表中的键。
containsValue(Object value) 如果此哈希表将一个或多个键映射到该值,则返回 true。
elements() 返回此哈希表中值的枚举。
entrySet() 返回此映射中包含的映射的 Set 视图。
equals(Object o) 根据 Map 接口中的定义,比较指定的 Object 与此 Map 是否相等。
get(Object key) 返回指定键映射到的值,如果此映射不包含该键的映射,则返回 null。
hashCode() 根据 Map 接口中的定义返回此 Map 的哈希码值。
isEmpty() 测试此哈希表是否没有键映射到值。
keys() 返回此哈希表中键的枚举。
keySet() 返回此映射中包含的键的集合视图。
merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction) 如果指定的键尚未与值关联或与 null 关联,则将其与给定的非 null 值关联。
put(K key, V value) 将此哈希表中的指定键映射到指定值。
putAll(Map<? 扩展 K,? 扩展 V> t) 将指定映射中的所有映射复制到此哈希表。
rehash() 增加该哈希表的容量并在内部重新组织该哈希表,以便更有效地容纳和访问其条目。
remove(Object key) 从此哈希表中删除键(及其对应的值)。
size() 返回此哈希表中键的数量。
toString() 以一组条目的形式返回此 Hashtable 对象的字符串表示形式,用大括号括起来并用 ASCII 字符“,”(逗号和空格)分隔。
values() 返回此映射中包含的值的集合视图。

接口 java.util.Map 中声明的方法

METHOD

DESCRIPTION

forEach(BiConsumer<?超级 K,?超级 V> 操作) 对此映射中的每个条目执行给定的操作,直到处理完所有条目或该操作引发异常。
getOrDefault(Object key, V defaultValue) 返回指定键映射到的值,如果此映射不包含该键的映射,则返回 defaultValue。
putIfAbsent(K key, V value) 如果指定的键尚未与值关联(或映射为 null),则将其与给定值关联并返回 null,否则返回当前值。
remove(Object key, Object value) 仅当指定键当前映射到指定值时,才删除该条目。
replace(K key, V value) 仅当指定键当前映射到某个值时才替换该条目。
replace(K key, V oldValue, V newValue) 仅当当前映射到指定值时才替换指定键的条目。
ReplaceAll(BiFunction<? super K,? super V,? 扩展 V> 函数) 将每个条目的值替换为在该条目上调用给定函数的结果,直到处理完所有条目或函数引发异常。


相关用法


注:本文由纯净天空筛选整理自佚名大神的英文原创作品 Properties Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。