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日

相关文章

  • 服务器完美设置,支持asp php cgi jsp asp.net mysql!

    下面是服务器完美设置的完整攻略。 服务器环境 首先我们需要确保服务器环境是支持asp、php、cgi、jsp、asp.net和mysql的。我们需要安装和配置以下软件: Web服务器:常用的有Apache、IIS、Nginx等,这里以Apache为例进行说明。 ASP支持:ASP需要安装IIS或者Apache+mod_aspdll插件。 PHP支持:需要安装…

    Java 2023年6月15日
    00
  • Java中高效的判断数组中某个元素是否存在详解

    Java中高效的判断数组中某个元素是否存在的方法,一般有以下两种: 方法一:使用Arrays类中的binarySearch()方法 Arrays类中的binarySearch()方法可以对已排序的数组进行二分查找,返回匹配元素的索引,若未找到则返回负数。该方法需要先对数组进行排序,时间复杂度为 O(log n)。 下面是一个使用binarySearch()方…

    Java 2023年5月26日
    00
  • Springboot 2.x集成kafka 2.2.0的示例代码

    下面我就来详细讲解一下“Springboot 2.x集成kafka 2.2.0的示例代码”的完整攻略。 简介 Kafka 是一个高吞吐量的分布式消息队列系统,常被用于日志处理、消息系统等场景。Spring Boot 是目前流行的 Java Web 开发框架,具有简单、快速、方便等特点。本文将介绍如何在 Spring Boot 2.x 中集成 Kafka 2.…

    Java 2023年6月2日
    00
  • Triple协议支持Java异常回传设计实现详解

    Triple协议支持Java异常回传设计实现详解 简介 Triple是一个基于Dubbo及其生态的,由阿里巴巴开源的微服务框架。其提供了完整的远程调用协议,支持Dubbo、gRPC、Hessian和Http等多种协议,同时也支持多种语言,包括Java、Go、Node.js,C++等。Triple的主要目标是提供高性能、轻量级、易使用的微服务解决方案。 本文将…

    Java 2023年5月27日
    00
  • Java中常用解析工具jackson及fastjson的使用

    Java中常用解析工具jackson及fastjson的使用攻略 jackson 1. 简介 jackson是一种可以将java对象转换为JSON格式,也可以将JSON格式转换为java对象的工具。它为一个高性能的JSON处理库,是Spring框架的默认JSON格式解析工具,此外也逐渐成为Java领域内最流行的JSON解析器之一。 2. 快速开始 首先我们需…

    Java 2023年5月26日
    00
  • 关于Android高德地图的简单开发实例代码(DEMO)

    如果您正在开发Android应用程序,并想在应用程序中添加地图功能,您可以使用高德地图API。该API可用于许多用例,包括地图摆放,检索地理编码和反地理编码,计算路线和在地图上绘制自定义图形等。 下面是关于Android高德地图的简单开发实例代码(DEMO)的完整攻略: 第一步:注册高德开发者账号 在使用高德地图API之前,您需要注册一个高德开发者账号。注册…

    Java 2023年5月20日
    00
  • JAVA深入探究之Method的Invoke方法

    JAVA深入探究之Method的Invoke方法 在Java中,使用Method类可以描述一个方法。Method类提供了invoke()方法,可以反射调用一个方法。本文将讲解Method的invoke方法的使用方法及示例。 什么是Method的Invoke方法 Method的Invoke方法是Java中反射调用方法的主要方法。它可以调用任意一个对象的任意一个…

    Java 2023年5月26日
    00
  • Java分布式锁由浅入深介绍

    Java分布式锁由浅入深介绍 什么是分布式锁 分布式锁是一种通过共享锁来保证分布式环境下多进程、多线程之间数据同步的技术。常用的锁算法有互斥锁、读写锁、乐观锁、悲观锁等。 基于Zookeeper的分布式锁 Zookeeper是一种分布式协同管理工具,提供了一种基于节点的会话机制,这种机制可以通过锁节点来控制多个进程的协调。Zookeeper主要有以下特点: …

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