如何创建和修改 Java 格式的属性文件?
以文本和 XML 格式编写程序?
在 Java 中,项目的属性文件由基于文本的键值对组成,这些键值对通常以 .properties 扩展名存储。内容的键值对逐行显示,通常使用记事本、写字板等创建。
属性文件是存储关键和机密数据的宝贵存储库。在本文中,我们将探讨使用 Java 程序创建属性文件的过程。此 (java.util.Properties) 包中的 Properties 类提供了多种实用程序存储方法,方便以以下格式存储属性:
文本格式或
XML 格式
文本格式创建
store() 函数用于以文本格式保存属性。此函数将 键值对 从属性表保存到 OutputStream,这样可以使用 load 方法 轻松加载到 properties 表中,该方法接受 InputStream。
声明
//store() 方法的声明 public void store(OutputStream out,String comments)
参数
Out 指用于生成 XML 文档的输出流。
Comments 用作属性列表的说明文本。
返回值
此方法从属性中检索值与指定键关联的列表,如果存在则返回先前的值,如果不存在则返回 null。
示例
由于我们正在以文本格式创建属性文件,因此"应提供有效的文件路径位置"。
import java.io.IOException; import java.io.FileNotFoundException; import java.util.Properties; import java.io.FileOutputStream; public class TutorialsPoint { public static void main(String args[]) throws IOException,FileNotFoundException{ // 首先,我们将创建属性文件 Properties prop = new Properties(); //在当前目录中创建Testing.properties文件 FileOutputStream fileOutputStream = new FileOutputStream( "Testing.properties"); //将值设置为属性 //如用户名和密码 prop.setProperty("username", "Tutorials Point"); prop.setProperty("password", "Success"); //我们使用 store() 方法,因为我们 //以文本格式将属性存储到属性文件中 prop.store( fileOutputStream, "以文本格式创建属性文件"); fileOutputStream.close(); } }
输出
我们将看到一个文件,该文件在程序中提到的指定位置处创建。如果未指定路径,则仅提供文件名,然后将其下载到当前工作目录

当我们打开文件时,我们将看到以下内容 −
#Creating Properties file in Text Format #Sun May 28 15:58:54 IST 2023 password=Success username=Tutorials Point
除了键值对之外,所有都被视为由 # 符号表示的注释。
当属性的内容最少时,使用文本格式的属性是有利的。
XML 格式创建
XML 是一种用于存储重要敏感信息的有效格式。可扩展标记语言 (XML) 有一套用于编码文档的规则。为了以 XML 格式存储属性,我们需要使用 storeToXML() 方法。
storeToXML() 方法生成一个 XML 文档,该文档表示此表中存在的所有属性。
声明
//storeToXML() 方法的声明 public void storeToXML(OutputStream os,String comment)
参数
Out 是指用于生成 XML 文档的输出流。
注释 用作属性列表的解释性文本。
返回值
由于 storeToXML() 方法返回类型为 void,因此它不会返回任何值。
示例
由于我们以文本格式创建属性文件,因此"应提供有效的文件路径位置"。
import java.io.IOException; import java.io.FileNotFoundException; import java.util.Properties; import java.io.FileOutputStream; public class TutorialsPoint { public static void main(String args[]) throws IOException, FileNotFoundException{ // 我们将创建属性文件 Properties prop = new Properties(); //在当前目录中创建Testing.properties FileOutputStream fileOutputStream = new FileOutputStream( "Testing.xml"); //将值设置为属性 //如用户名和密码 prop.setProperty("username", "Tutorials Point"); prop.setProperty("password", "Success"); //我们使用 storeToXML() 方法,因为 //将属性以 XML 格式存储到属性文件中 prop.storeToXML( fileOutputStream, "以 XML 格式创建属性文件"); fileOutputStream.close(); } }
输出
我们将看到一个文件,该文件在程序中提到的指定位置处创建。如果未指定路径,则仅提供文件名,然后将其下载到当前工作目录

当我们打开文件时,我们将看到以下内容 −
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>Creating Properties file in XML Format</comment> <entry key="password">Success</entry> <entry key="username">Tutorials Point</entry> </properties>
当属性文件包含大量和关键信息时,建议专门选择XML 格式。
有时我们很难以 XML 格式读取,因此我们有将 XML 内容转换为只读模式的方法。下面的 Java 程序可帮助我们满足此要求。
要遵循的步骤
输入包含必要信息的 XML 文件。
选择一个目标来存储文本格式的输出。
使用 loadFromXmL() 加载 XmL 文件。
最后,我们将获得上面看到的文本格式的输出。
输入文件 (Testing.xml)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>Creating Properties file in XML Format</comment> <entry key="password">Success</entry> <entry key="username">Tutorials Point</entry> </properties>
示例
import java.io.FileInputStream; import java.util.InvalidPropertiesFormatException; import java.util.Properties; import java.io.InputStream; import java.io.OutputStream; import java.io.FileOutputStream; import java.io.IOException; public class TutorialsPoint { public static void main(String[] args) throws InvalidPropertiesFormatException, IOException{ String resultantFile = "sample.properties"; String inputFile = "Testing.xml"; InputStream is = new FileInputStream(inputFile); OutputStream os = new FileOutputStream(resultantFile); Properties properties = new Properties(); properties.loadFromXML(is); properties.store( os, "Converted from Testing.xml"); } }
输出

当我们打开该文件时,我们将看到以下内容 −
#Converted from Testing.xml #Sun May 28 16:46:03 IST 2023 password=Success username=Tutorials Point
结论
在本文中,我们研究了如何构建属性文件,还了解了将 XML 内容转换为只读模式的方法。动态元素的用法显而易见,允许在任何给定时间轻松进行修改。