Java Property类使用详解

Java Property类使用详解

在Java中,经常需要进行属性配置操作,而Java的Property类正是用来读写属性文件的。本文将详细讲解Java Property类的使用。

创建属性文件

属性文件通常以".properties"为后缀,用于存储键值对的配置信息。我们可以用文本编辑器手动创建属性文件,格式如下:

# This is a comment
name=Tina
age=18

加载属性文件

Java Property类可以用于读取和写入属性文件,我们可以通过以下代码来加载属性文件:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class PropertyDemo {

    public static void main(String[] args) {

        Properties prop = new Properties();
        InputStream input = null;

        try {

            input = new FileInputStream("config.properties");

            // 加载属性文件
            prop.load(input);

            // 获取属性值
            String name = prop.getProperty("name");
            String age = prop.getProperty("age");

            System.out.println("Name: " + name);
            System.out.println("Age: " + age);

        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

}

上面的代码将读取"config.properties"属性文件,并输出其中的"Name"和"Age"属性值。需要注意的是,属性文件必须放在Java项目的根目录中,否则需要使用文件的绝对路径。

写入属性文件

我们可以使用下面的代码来写入属性文件:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;

public class PropertyWriteDemo {

    public static void main(String[] args) {

        Properties prop = new Properties();
        OutputStream output = null;

        try {

            output = new FileOutputStream("config.properties");

            // 设置属性值
            prop.setProperty("name", "Tina");
            prop.setProperty("age", "18");

            // 写入属性文件
            prop.store(output, null);

            System.out.println("Write to properties file succeeded.");

        } catch (IOException io) {
            io.printStackTrace();
        } finally {
            if (output != null) {
                try {
                    output.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

}

上面的代码将在项目的根目录下创建或覆盖"config.properties"文件,并将"name"和"age"属性写入该文件中。

示例说明

示例一

假设我们需要在一个Java Web项目中读取数据库的连接信息,我们可以将连接信息写入属性文件,然后使用Property类进行读取。

属性文件:

# database properties
db.url=jdbc:mysql://localhost:3306/mydatabase
db.username=root
db.password=admin

Java代码:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class DatabaseUtil {

    private Properties prop = null;

    public DatabaseUtil(String filename) {

        prop = new Properties();
        InputStream input = null;

        try {

            input = new FileInputStream(filename);
            prop.load(input);

        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

    public String getUrl() {
        return prop.getProperty("db.url");
    }

    public String getUsername() {
        return prop.getProperty("db.username");
    }

    public String getPassword() {
        return prop.getProperty("db.password");
    }

}

示例二

假设我们需要在一个Java项目中将日志信息写入属性文件中,我们可以使用Property类的方法来实现。另外,我们还可以将属性文件中的日志级别动态配置,从而方便地进行日志级别调整。

属性文件:

# logging properties
log.level=INFO
log.output=file
log.file.path=/var/log/app.log

Java代码:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;

public class LogUtil {

    private static Properties prop = null;

    public static void setLogLevel(String level) {

        if (prop == null) {
            prop = new Properties();
        }

        OutputStream output = null;

        try {

            output = new FileOutputStream("log.properties");
            prop.setProperty("log.level", level);
            prop.store(output, null);

        } catch (IOException io) {
            io.printStackTrace();
        } finally {
            if (output != null) {
                try {
                    output.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

    public static void log(String message) {

        if (prop == null) {
            prop = new Properties();
        }

        InputStream input = null;

        try {

            input = new FileInputStream("log.properties");
            prop.load(input);
            String level = prop.getProperty("log.level");

            if ("INFO".equals(level)) {
                System.out.println("INFO: " + message);
            } else if ("DEBUG".equals(level)) {
                System.out.println("DEBUG: " + message);
            } else if ("ERROR".equals(level)) {
                System.out.println("ERROR: " + message);
            }

        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

}

上述示例代码演示了如何将日志信息写入"log.properties"属性文件中,并根据动态配置的日志级别输出日志信息。

阅读剩余 82%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Property类使用详解 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • SpringMVC视图作用详解

    以下是关于“SpringMVC视图作用详解”的完整攻略,其中包含两个示例。 1. 前言 SpringMVC是一种常用Java Web开发框架,其核心思想是基于MVC模式来实现Web应用程序开发。而视图是SpringMVC框架的一个重要组成部分,负责将模型数据渲染成HTML页面并返回给客户端。本攻略将详细讲解SpringMVC视图的作用和使用方法。 2. Sp…

    Java 2023年5月16日
    00
  • Java学生信息管理系统设计(数据库版)

    Java学生信息管理系统设计(数据库版)攻略 1. 确定需求 首先需要明确学生信息管理系统的需求,包括以下几个方面: 学生信息的增加、删除、修改、查询等操作; 可以根据学生的姓名、学号等信息进行查询和排序; 连接数据库实现数据的存储和读取。 2. 设计数据库 设计数据库是整个系统设计的关键部分,需要根据需求确定数据库的表结构、字段属性等。 以学生信息为例,可…

    Java 2023年5月19日
    00
  • JavaWeb如何实现统一查询接口(jfinal)

    JavaWeb作为Web开发的一种技术栈,在实际开发中,经常需要实现对不同数据源的查询并返回结果。如何实现一个统一的查询接口,以便更好的统一管理和维护查询逻辑呢?在这里,我们可以使用Jfinal框架来实现一个统一的查询接口,下面是一个完整的攻略。 一、前置条件 在进行本文中的示例操作前,需要具备以下环境和工具。 JDK 1.8或以上 MySQL 5.x或以上…

    Java 2023年5月26日
    00
  • java利用oss实现下载功能

    下面是“java利用oss实现下载功能”的完整攻略。 1. 准备工作 首先,我们需要在阿里云OSS上创建一个存储空间(Bucket),并上传一些文件数据。然后,我们需要在本地安装阿里云Java SDK,用于连接OSS服务并实现下载操作。 2. Java代码实现 下面是Java代码实现示例: 2.1 引入依赖 在Maven项目中,我们需要在pom.xml中引入…

    Java 2023年5月19日
    00
  • Nginx Location指令URI匹配规则详解小结

    以下是“Nginx Location指令URI匹配规则详解小结”的完整攻略。 什么是Nginx Location指令? Nginx Location指令是用于匹配URL路径的一个指令。它可以根据配置文件中的规则,将客户端请求的URL与服务器上实际存储的文件或目录路径进行映射,然后进行相应的处理。Location指令非常灵活,支持多种匹配方式,其URI匹配规则…

    Java 2023年6月15日
    00
  • JsChart组件使用详解

    JsChart组件使用详解 简介 JsChart是一个基于JavaScript的图表库,可以通过该组件实现多种类型的图表(如折线图、柱形图、饼图等)展示,并支持自定义配置和风格。 安装 可以通过npm进行安装: npm install jchart 或者下载jchart.min.js文件,引入到HTML页面中: <script type="t…

    Java 2023年6月15日
    00
  • rsa加密算法使用示例分享

    RSA加密算法是一种非对称加密算法,它在加密时使用了公钥(public key)和私钥(private key)两把不同的钥匙。公钥可以随意分发,而私钥只有持有者自己知道。本文将为大家详细讲解RSA加密算法的使用示例。 一、生成密钥对 在使用RSA加密算法之前,需要先生成公钥和私钥这两把钥匙。可以通过OpenSSL工具生成: # 生成2048位的RSA密钥对…

    Java 2023年5月19日
    00
  • 详解Java线程池的使用及工作原理

    详解Java线程池的使用及工作原理 线程池介绍 线程池是一种创建和管理多个线程的方式,它能够提高程序的运行性能,避免因线程创建和销毁所带来的性能损耗。Java线程池机制包括三个部分:线程池、工作线程和任务队列。 线程池的好处 降低线程创建和销毁的开销。 提高响应速度,线程已经创建,任务可以立即执行。 提高线程的可管理性。线程池作为一个工作队列,可以进行线程的…

    Java 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部