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"属性文件中,并根据动态配置的日志级别输出日志信息。

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

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

相关文章

  • Java多线程synchronized同步方法详解

    Java多线程synchronized同步方法详解 在Java多线程编程中,保证线程安全是一个必须面对的问题。synchronized是Java中最常用的线程同步机制之一,可以帮助我们对代码进行加锁,防止多个线程同时执行同一段代码,从而保证数据一致性。本篇攻略将详细讲解synchronized同步方法的使用方法。 什么是synchronized synchr…

    Java 2023年5月19日
    00
  • Spring Boot使用Schedule实现定时任务的方法

    下面是详细的“Spring Boot使用Schedule实现定时任务的方法”的攻略: 一、概述 在Spring Boot中,我们可以使用Spring Scheduler实现简单的定时任务。Spring Scheduler是Spring框架中的一个轻量级、基于内存的定时任务框架,可以方便地实现定时任务。在本文中,我们将详细介绍如何在Spring Boot中使用…

    Java 2023年5月20日
    00
  • jquery zTree异步加载简单实例分享

    首先,让我们来了解一下什么是 jQuery zTree 以及异步加载。 jQuery zTree 是什么? jQuery zTree 是一款基于 jQuery 的树形视图插件,它具有结构清晰、功能强大和使用简便的特点。它可以帮助我们轻松实现一个树形结构的网页,比如分类列表、目录树、导航菜单等等。 异步加载是什么? 当我们需要渲染的树形结构数据较大时,如果一次…

    Java 2023年6月15日
    00
  • 使用hibernate和struts2实现分页功能的示例

    使用Hibernate和Struts2实现分页功能可以分为以下几个步骤: 添加依赖 在pom.xml文件中添加Hibernate和Struts2的依赖,示例代码如下: <dependencies> <!– Hibernate –> <dependency> <groupId>org.hibernate&lt…

    Java 2023年5月20日
    00
  • SpringMVC编程使用Controller接口实现控制器实例代码

    在 SpringMVC 中,控制器是用于处理 Web 请求的组件。SpringMVC 提供了多种方式来实现控制器,其中一种方式是使用 Controller 接口。本文将详细讲解如何使用 Controller 接口实现控制器,包括编写控制器、处理请求、返回响应等。 编写控制器 要使用 Controller 接口实现控制器,我们需要编写一个类,并实现 Contr…

    Java 2023年5月18日
    00
  • SpringBoot实现评论回复功能(数据库设计)

    在Spring Boot中实现评论回复功能需要设计相应的数据库结构。以下是一个简单的评论回复数据库设计示例: 数据库设计 评论表 字段名 类型 描述 id bigint 主键 content varchar(255) 评论内容 user_id bigint 用户ID create_time datetime 创建时间 回复表 字段名 类型 描述 id big…

    Java 2023年5月14日
    00
  • Java中输入与输出的方法总结

    接下来我会详细讲解Java中输入与输出的方法总结,下文包含标题、段落、列表、代码块等markdown格式的内容,方便您查看和学习。 Java中输入与输出的方法总结 Java中的输入与输出指的是程序的输入和输出操作。根据数据的输入/输出位置不同,可以将Java中的输入/输出方式分为以下四种: 标准输入输出 文件输入输出 网络输入输出 对象输入输出 1. 标准输…

    Java 2023年5月26日
    00
  • springsecurity中http.permitall与web.ignoring的区别说明

    在Spring Security中,我们可以使用http.permitAll()或者web.ignoring()来配置哪些接口需要放行。这两个方法虽然都可以达到相同的效果,但它们的实现方式有所不同。 http.permitAll() 是Spring Security提供的一个方法,它允许我们定义一组匹配URL的表达式,这些URL可以被所有用户访问。例如: p…

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