Java基础学习总结(15)——java读取properties文件总结

Wesley13
• 阅读 762

一、java读取properties文件总结

  在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResourceAsStream方法和InputStream流去读取properties文件,使用getResourceAsStream方法去读取properties文件时需要特别注意properties文件路径的写法,测试项目如下:

1.1.项目的目录结构

1.2. java读取properties文件代码测试

Java基础学习总结(15)——java读取properties文件总结

/*    范例名称:java读取properties文件总结
 *     源文件名称:PropertiesFileReadTest.java
 *    要  点:
 *        1. 使用getResourceAsStream方法读取properties文件
 *        2. 使用InPutStream流读取properties文件
 *        3. 读取properties文件的路径写法问题
 *    时间:2014/4/2
 */
package propertiesFile.read.test;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.MessageFormat;
import java.util.Properties;

public class PropertiesFileReadTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            readPropFileByGetResourceAsStream();
            System.out.println("");
            readPropFileByInPutStream();
        } catch (Exception e) {
            e.printStackTrace();// TODO: handle exception
        }
    }

    /**
     * 使用getResourceAsStream方法读取properties文件
     */
    static void readPropFileByGetResourceAsStream() {
        /**
         * 读取src下面config.properties包内的配置文件 
         * test1.properties位于config.properties包内
         */
        InputStream in1 = PropertiesFileReadTest.class.getClassLoader()
                .getResourceAsStream("config/properties/test1.properties");
        /**
         * 读取和PropertiesFileReadTest类位于同一个包里面的配置文件 
         * test2.properties和PropertiesFileReadTest类在同一个包里面
         */
        InputStream in2 = PropertiesFileReadTest.class
                .getResourceAsStream("test2.properties");
        /**
         * 读取src根目录下文件的配置文件 
         * jdbc.properties位于src目录
         */
        InputStream in3 = PropertiesFileReadTest.class.getClassLoader()
                .getResourceAsStream("jdbc.properties");
        /**
         * 读取位于另一个source文件夹里面的配置文件 
         * config是一个source文件夹,config.properties位于config source文件夹中
         */
        InputStream in4 = PropertiesFileReadTest.class.getClassLoader()
                .getResourceAsStream("config.properties");

        Properties p = new Properties();
        System.out.println("----使用getResourceAsStream方法读取properties文件----");
        try {
            System.out
                    .println("----------------------------------------------");
            p.load(in1);
            System.out.println("test1.properties:name=" + p.getProperty("name")
                    + ",age=" + p.getProperty("age"));
            System.out
                    .println("----------------------------------------------");

            p.load(in2);
            System.out.println("test2.properties:name=" + p.getProperty("name")
                    + ",age=" + p.getProperty("age"));
            System.out
                    .println("----------------------------------------------");

            p.load(in3);
            System.out.println("jdbc.properties:");
            System.out.println(String.format("jdbc.driver=%s",
                    p.getProperty("jdbc.driver")));// 这里的%s是java String占位符
            System.out.println(String.format("jdbc.url=%s",
                    p.getProperty("jdbc.url")));
            System.out.println(String.format("jdbc.usename=%s",
                    p.getProperty("jdbc.usename")));
            System.out.println(String.format("jdbc.password=%s",
                    p.getProperty("jdbc.password")));
            System.out
                    .println("----------------------------------------------");

            p.load(in4);
            System.out.println("config.properties:");
            System.out.println(MessageFormat.format("dbuser={0}",
                    p.getProperty("dbuser")));// {0}是一个java的字符串占位符
            System.out.println(MessageFormat.format("dbpassword={0}",
                    p.getProperty("dbpassword")));
            System.out.println(MessageFormat.format("database={0}",
                    p.getProperty("database")));
            System.out
                    .println("----------------------------------------------");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if (in1 != null) {
                try {
                    in1.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

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

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

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

    /**
     * 使用InPutStream流读取properties文件
     */
    static void readPropFileByInPutStream() {
        InputStream in1 = null;
        InputStream in2 = null;
        InputStream in3 = null;
        InputStream in4 = null;
        System.out.println("----使用InputStream流读取properties文件----");
        try {
            /**
             * 读取src根目录下文件的配置文件 
             * jdbc.properties位于src目录
             */
            in1 = new BufferedInputStream(new FileInputStream(
                    "src/jdbc.properties"));
            /**
             * 读取src下面config.properties包内的配置文件 
             * test1.properties位于config.properties包内
             */
            in2 = new BufferedInputStream(new FileInputStream(
                    "src/config/properties/test1.properties"));
            /**
             * 读取和PropertiesFileReadTest类位于同一个包里面的配置文件 
             * test2.properties和PropertiesFileReadTest类在同一个包里面
             */
            in3 = new BufferedInputStream(new FileInputStream(
                    "src/propertiesFile/read/test/test2.properties"));
            /**
             * 读取位于另一个source文件夹里面的配置文件 
             * config是一个source文件夹,config.properties位于config source文件夹中
             */
            in4 = new FileInputStream("config/config.properties");

            Properties p = new Properties();
            System.out
                    .println("----------------------------------------------");

            p.load(in1);
            System.out.println("jdbc.properties:");
            System.out.println(String.format("jdbc.driver=%s",
                    p.getProperty("jdbc.driver")));// 这里的%s是java String占位符
            System.out.println(String.format("jdbc.url=%s",
                    p.getProperty("jdbc.url")));
            System.out.println(String.format("jdbc.usename=%s",
                    p.getProperty("jdbc.usename")));
            System.out.println(String.format("jdbc.password=%s",
                    p.getProperty("jdbc.password")));
            System.out
                    .println("----------------------------------------------");

            p.load(in2);
            System.out.println("test1.properties:name=" + p.getProperty("name")
                    + ",age=" + p.getProperty("age"));
            System.out
                    .println("----------------------------------------------");
            p.load(in3);
            System.out.println("test2.properties:name=" + p.getProperty("name")
                    + ",age=" + p.getProperty("age"));
            System.out
                    .println("----------------------------------------------");

            p.load(in4);
            System.out.println("config.properties:");
            System.out.println(MessageFormat.format("dbuser={0}",
                    p.getProperty("dbuser")));// {0}是一个java的字符串占位符
            System.out.println(MessageFormat.format("dbpassword={0}",
                    p.getProperty("dbpassword")));
            System.out.println(MessageFormat.format("database={0}",
                    p.getProperty("database")));
            System.out
                    .println("----------------------------------------------");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (in1 != null) {
                try {
                    in1.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

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

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

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

}

Java基础学习总结(15)——java读取properties文件总结

运行结果:

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
java读取properties文件总结
一、java读取properties文件总结在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResourceAsStream方法和InputStream流去读取properties文件,使用getRe
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
3年前
Java 读取Properties文件时应注意的路径问题
1\.使用Class的getResourceAsStream()方法读取Properties文件(资源文件)的路径问题:      InputStreaminthis.getClass().getResourceAsStream("资源Name");    注意:    (1)这种方式要求Properties资源文件必须与当
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这