如何创建和修改 Java 格式的属性文件?

javaobject oriented programmingprogramming

以文本和 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 内容转换为只读模式的方法。动态元素的用法显而易见,允许在任何给定时间轻松进行修改。


相关文章