java中的Properties配置文件_java配置文件properties文件中-程序员宅基地

技术标签: java  

一、简介

1.什么是properties文件

1、java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,这种文件以key=value格式存储内容。
2、Properties类继承自Hashtable,是线程安全的,多个线程可以共享单个properties对象而无需进行外部同步。
3、一般这个文件作为一些参数的存储,代码就可以灵活一点。通俗点讲就相当于定义一个变量,在这个文件里面定义这些变量的值,在程序里面可以调用这些变量,好处就是,如果程序中的参数值需要变动,直接来改这个.property文件就可以了,不用在去修改源代码。

2.properties文件特点

1、键值对格式。
2、“ = ”等号后面,值前面,的空格,会自动忽略掉。
3、值后面的空格,不会忽略。
4、“ = ”等号后面的双引号,不会忽略。
5、“ # ”号后面内容,为注释,忽略。

3.常用方法

1、getProperty(String key):用指定的键在此属性列表中搜索属性。也就是通过参数key,得到key所对应的value。
2、load(InputStream inStream):从输入流中读取属性列表(键值对)。通过对指定的文件进行装载来获取该文件中的所有键-值对。以供getProperty(String key)来搜索。
3、setProperty(String key,String value):调用Hashtable的方法put。他通过调用基类的put方法来设置键-值对。
4、store(OutputStream out,String comments)以适合使用load方法加载到Properties表中的格式,将此Properties表中的属性列表(键和元素对)写入输出流。与load方法相反,该方法将键-值对写入到指定的文件中去。
5、clear():清除所有装载的键-值对。该方法在基类中提供

4.Java 读取 .properties 配置文件的几种方式

a、基于ClassLoder(类加载器)读取配置文件
注意:配置文件一定要放到当前目录下。
(目录层次也可以从src下面的文件夹开始但不必包含src,且不必包含反斜杠开头。)

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

public class demo01 {
    
    public static void main(String[] args) {
    
        Properties properties = new Properties();
        //使用ClassLoader加载properties配置文件生成对应的输入流
        InputStream in = demo01.class.getClassLoader().getResourceAsStream("config/config.properties");
        try {
    
            //使用properties对象加载输入流
            properties.load(in);
            //根据key获取对应的value
            String url = properties.getProperty("url");
            System.out.println("url:"+url);
        } catch (IOException e) {
    
            e.printStackTrace();
        }
    }
}

b、基于 InputStream 读取配置文件
注意:该方式的优点在于可以读取任意路径下的配置文件.

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

public class Demo02 {
    
    public static void main(String[] args) {
    
        Properties properties = new Properties();
        try {
    
            //使用InputStream流 读取配置文件
            BufferedReader bufferedReader = new BufferedReader(new FileReader("C:/Users/szwb093/Desktop/config.properties"));
            //使用properties对象加载输入流
            properties.load(bufferedReader);
            //根据key获取对应的value
            String url = properties.getProperty("url");
            System.out.println("url:"+url);

        } catch (FileNotFoundException e1) {
    
            e1.printStackTrace();
        }catch (IOException e) {
    
            e.printStackTrace();
        }
    }
}

c、通过 java.util.ResourceBundle 类来读取,这种方式比使用 Properties 要方便一些,
通过 ResourceBundle.getBundle( ) 静态方法来获取(ResourceBundle是一个抽象类),这种方式来获取properties属性文件不需要加.properties后缀名,只需要文件名即可。

//config为属性文件名,放在包config下,如果放在src下(资源文件夹下),直接用config即可
ResourceBundle resource = ResourceBundle.getBundle("config/config");
String url = resource.getString("url");
System.out.println("url:"+url);

/*
    Properties:用来读取配置文件
     */
    @Test
    public void test2() throws Exception {
    
        Properties pros = new Properties();
        //此时的文件默认在当前module下
        //读取配置文件的方式一
//        FileInputStream fis = new FileInputStream("jdbc1.properties");
   //     FileInputStream fis = new FileInputStream("src\\jdbc1.properties");

        pros.load(fis);

        //读取配置文件方式二
        //配置文件默认识别为:当前module的src下
        ClassLoader classloder = ClassLoaderTest.class.getClassLoader();
        InputStream is = classloder.getResourceAsStream("jdbc1.properties");
        pros.load(is);

        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        System.out.println("user =" + user + "password =" + password);
    }

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45925146/article/details/127196794

智能推荐

动手学深度学习pytorch版练习解答—3.1线性回归_动手学深度学习 pytorch 课后习题答案-程序员宅基地

文章浏览阅读1.6k次,点赞13次,收藏14次。第一问和第三问最后一小题都是开放性题目,有很多角度去思考和回答。希望我的这份参考能为您的学习带来帮助,您的指正对我而言也是大有裨益。假设我们有⼀些数据x1, . . . , xn ∈ R。我们的⽬标是找到⼀个常数b,使得最小化∑i(xi−b)2\sum_{i}(x_i-b)^2∑i​(xi​−b)2(1)找到最优值b的解析解。(2)这个问题及其解与正态分布有什么关系?2. 推导出使⽤平⽅误差的线性回归优化问题的解析解。为了简化问题,可以忽略偏置b(我们可以通过向X添加所有值为1的⼀列来做到这⼀点)_动手学深度学习 pytorch 课后习题答案

补题列表-程序员宅基地

文章浏览阅读259次。二分 + 三分6 / 15 Problem A Hamburgers8 / 15 Problem B Monthly Expense7 / 20 Problem C Equation Again4 / 10 Problem D Error Curves6 / 15 Problem E ..._分配补题题数二

对话海归与福布斯精英榜创业者:不得不知的技术创业那些事儿-程序员宅基地

文章浏览阅读295次。作为工程师或技术人员,在日常工作中应该积累哪些经验为今后创业做准备?如何面对创业过程中常见的不得不做之事?技术型创业公司前期如何组建团队?如何吸引技术人才?技术型创业公司的创始人是不是看到以上问题都感同身受呢?上一期,咱们为大家带来了TGO鲲鹏会在杭州举办的「技术类创业公司的创业和从 0-1 的经验」活动中熊飞先生的《经纬中国熊飞:底层技术创业的春天来了》,其中有不少内容都说进了大家的心坎里。而本...

计算机网络基础知识整理-程序员宅基地

文章浏览阅读10w+次,点赞482次,收藏3.2k次。参考书目:计算机网络(第6版 谢希仁)一、概述1、三网:电信网络、有线电视网络和计算机网络2、电路交换、报文交换、分组交换的比较电路交换公共电话网(PSTN网)和移动网(包括GSM和CDMA网)采用的都是电路交换技术,它的基本特点是采用面向连接的方式,在双方进行通信之前,需要为通信双方分配一条具有固定宽带的通信电路,通信双方在通信过程中一直占用所分配的资源,直到通信结束,并且在电..._计算机网络基础

【Python系列】Python基础语法轻松入门—从变量到循环-程序员宅基地

文章浏览阅读1.5w次,点赞77次,收藏89次。Python 是一种高级、解释型的编程语言,具有简单易学、可读性强、开发效率高等特点。本文将介绍 Python 的基础语法,包括变量、数据类型、运算符、条件语句、循环语句等,并提供相应的示例代码。

制做自己的马赛克微信头像_马赛克头像生成-程序员宅基地

文章浏览阅读1.5w次。CSDN的排版太难用了,建议大家看回我个人博客上的原文想法2013年接近尾声了,有的媒体会用马赛克的方式,把一年中的大事件汇集到一张图片上。印象中天才少年Matrix67曾试用Mathematica制作过自己马赛克头像,于是便有了用微信朋友圈里的图片来制作一个自己的微信头像。马赛克头像觉得不像我,可以离开座位,退后一点,离显示器远点看这张图片。动手_马赛克头像生成

随便推点

记录一次腾讯X5内核64位手机初始化失败-程序员宅基地

文章浏览阅读482次。之前一直在使用x5内核,只需要一个jar包和so文件就能让webview实现多余原生webview的水平,在32位的手机上能够正常运行,但是到了64位手机上就报如下错误:E/ERROR:: ..................................................................................... ..........._x5内核初始化失败是什么意思

人工智能枕头,胜智能音箱百倍,可记录梦境,有钱也买不到-程序员宅基地

文章浏览阅读140次。人工智能今年很火,产品不少,大的小的、高的矮的、像人的像狗的、会说话的会跳舞的、红的白的,这精灵、那小爱小布的、99的99999的、买得起卖不起的,让人应接不暇,还没开始怎么着就已经开始撕起来了。作为科技互联网领域的一份子,当然也要蹭一下人工智能的热点,但是咱得来点不一样的,当然也得必须一鸣惊人的,它就是智能枕头:“小月月”,取自月明千里。一个让你一沾..._人工学枕头

KCF代码调试并显示效果(matlab)_kcf代码matlab-程序员宅基地

文章浏览阅读4.5k次,点赞9次,收藏69次。KCF代码调试并显示效果(matlab)最近接触KCF算法,想要试一下matlab版本代码看看效果怎么样,总体的过程如下:一、调试环境:win10 + matlab R2016a二、程序代码及数据集下载1. 程序代码:KCF算法的提出:High-Speed Tracking with Kernelized Correlation Filters J. F. Henriques..._kcf代码matlab

linux如何调出xfce4,Archlinux+xfce4安装完成后配置-程序员宅基地

文章浏览阅读4.2k次。Archlinux+xfce4安装完成后配置发布时间:2009-11-06 19:52:54来源:红联作者:gxylcqx[i=s] 本帖最后由 gxylcqx 于 2009-11-6 20:27 编辑 [/i]从Ubuntu转到Archlinux下有一段时间了,晒晒我的配置笔记,只为Archlinux朋友少走弯路,文中资料很多来自wiki.archlinux.org大家肯看E文肯定不是问题的啦,..._xfce4 dpi 字体大小

openssh修复(CVE-2017-15906)(CVE-2018-15919)这两个漏洞_cve维护-程序员宅基地

文章浏览阅读6.3k次。修复以下漏洞系统目前自带openssh是7.4升级至8.0即可_cve维护

VFH+避障/局部路径规划算法_matlab vfh算法 路径规划 矢量场直方图-程序员宅基地

文章浏览阅读3.6k次,点赞13次,收藏43次。VFH+避障/局部路径规划算法这篇文章是我看论文《VFH+: Reliable Obstacle Avoidance for Fast Mobile Robots》(Iwan Ulrich and Johann Borenstein)的笔记,所以说是文章的翻译也可以。想看原paper的可以自己去找,看过VFH算法的话,这个VFH+算法还是非常好懂的。我前面写过一篇讲VFH算法的文章,感兴趣的可以去看看。VFH局部路径规划算法我在讲VFH算法的最后,写了一点我对VFH算法的评价,主要有两点,一是VFH_matlab vfh算法 路径规划 矢量场直方图

推荐文章

热门文章

相关标签