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

智能推荐

Python 子类不可以直接访问父类的私有方法和私有属性_python 私有成员变量 子类没法调用?-程序员宅基地

文章浏览阅读2.7k次。子类对象不能在自己的方法内部直接访问父类的私有方法和私有属性。注意:在对象的方法内部是可以访问自己所在类的私有属性和私有方法。代码举例:class A(): #父类 def __init__(self): self.num1 =100 self.__num2 = 200 def __test(self): ..._python 私有成员变量 子类没法调用?

【完结篇】c# winfrom 工作流程图开发、自动表单开发、拖拽控件、流程图自定义拖拽连线、 全自动报表表单设计_c# 开发拖拽流程软件-程序员宅基地

文章浏览阅读2.1k次,点赞5次,收藏8次。报表配置完毕后,前端可以进行根据配置条件筛选结果。表单自由设计,支持全选、移动等功能。报表配置,根据表单自动配置报表。系统设置-角色与权限管理。流程节点配置-经办人。流程节点配置-可写字段。流程节点配置-流转设置。..._c# 开发拖拽流程软件

大数据考研毕设选题推荐-程序员宅基地

文章浏览阅读791次,点赞17次,收藏7次。且不提你是否真的有能力做毕设的时候把初试准备好(我自认做不到分心,为了备战初试,我几乎大四所有课程都是70左右飘过),你能保证你的毕设内容一定和目标院校的复试考察内容相关或者能成为老师眼中的加分点吗?因为考试是一件“千人过独木桥”的事情。拿我们计算机举例子,A的毕设就是一个在线网站,当时老师体谅A要二战,给了我个简单的题目,确实,毕设比别人轻松多了(相对而言,别人都是什么算法,这那的)大部分人的精力集中度是有限的,我还是建议优先做当前最重要的事情,如果考研是你当下最看重的事情,建议你有限把考研做好。

轻量级分布式文件系统FastDFS使用安装说明手册(新手入门级)_fastfs windows-程序员宅基地

文章浏览阅读2w次。轻量级分布式文件系统FastDFS使用安装说明手册(新手入门级)_fastfs windows

use of deleted function ‘std::basic_istream<_CharT, _Traits>::basic_istream(const std::basic_istream_use of deleted function 'std::basic_fstream<_chart-程序员宅基地

文章浏览阅读844次。下述代码报错,原因是因为istream后漏了一个 &//从输入流中将家庭作业的成绩读入到一个vector<double>中istream read_hw(istream& in, vector<double>& hw){ if (in) { //清除vector原先的内容 hw.clear(); //读家庭作业成绩 double x; while (in >_use of deleted function 'std::basic_fstream<_chart, _traits>::basic_fstream(

基于MindSpore的Transformer网络实现_seq2seq mindspore-程序员宅基地

文章浏览阅读1.3k次。Transformer使用Self Attention机制解决了传统的基于RNN的Seq2Seq模型难以处理长序列的句子,存在信息丢失情况以及无法并行训练(时序依赖)的问题。Transformer包含Encoder和Decoder两部分,其中Encoder单元和Decoder单元重复了N次(N可以设置,论文中N值为6)。_seq2seq mindspore

随便推点

Unicode的基本知识总结_61448 uncode是什么-程序员宅基地

文章浏览阅读680次。Unicode的基本知识总结前言一、Unicode是什么?二、Unicode的编码与实现1.Unicode的编码方式2.Unicode的实现方式总结前言秋招面试某公司的时候,面试官突然发难,问起了Unicode的相关知识,使我手足无措,今天抽出时间来专门学习整理一下相关知识一、Unicode是什么?Unicode,中文又称万国码、国际码、统一码、单一码,是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。二、Unicode._61448 uncode是什么

富文本编辑器:editor.md_editor编辑器-程序员宅基地

文章浏览阅读2.7k次,点赞5次,收藏21次。富文本编辑器Editormd简介Editor.md——功能非常丰富的编辑器,左端编辑,右端预览,非常方便,完全免费官网:https://pandao.github.io/editor.md/主要特征支持“标准” Markdown / CommonMark 和 Github 风格的语法,也可变身为代码编辑器;支持实时预览、图片(跨域)上传、预格式文本/代码/表格插入、代码折叠、搜索替换、只读模式、自定义样式主题和多语言语法高亮等功能;支持 ToC 目录(Table o_editor编辑器

一读就错的68个姓氏,第一个就读错了_任作为姓氏很多人读错-程序员宅基地

文章浏览阅读733次。一读就错的68个姓氏,第一个就读错了转载:http://cul.qq.com/a/20170414/032417.htm[摘要]我国有很多姓氏,看起来都是常见的字,一写就会,可是一读,就不是那个样子了,往往读错,让人啼笑皆非。我国有很多姓氏,看起来都是常见的字,一写就会,可是一读,就不是那个样子了,往往读错,让人啼笑皆非。中国的姓氏中,除了有生僻字,还有不少容易读错的姓_任作为姓氏很多人读错

Error downloading packages: qt3-3.3.8b-51.el7.x86_64: [Errno 256] No more mirrors to try._no presto metadata available for base-程序员宅基地

文章浏览阅读7.6k次。Error downloading packages: qt3-3.3.8b-51.el7.x86_64: [Errno 256] No more mirrors to try. 1:qt-x11-4.8.7-2.el7.x86_64: [Errno 256] No more mirrors to try. 解决办法_no presto metadata available for base

matlab cell2mat 函数将元胞转换成数值矩阵出错_m{n} = cat(1,c{:,n});-程序员宅基地

文章浏览阅读1.5w次,点赞5次,收藏19次。matlab cell2mat 函数将元胞转换成数值矩阵出错matlab 中经常涉及到各种数据类型的转换。在将元胞型转换成数值矩阵的过程中我遇到了一个非常有趣的问题,代码如下:% 元胞型转换为数值型矩阵close allclearclc% 这个data中的price是从excel中读取的数据并做在matlab中做了一定转换处理load data% 生成元胞型矩阵,m1整数型,m2浮..._m{n} = cat(1,c{:,n});

Python读取json文件-程序员宅基地

文章浏览阅读4.5w次,点赞22次,收藏91次。使用Python读取json文件,并输出为两种不同类型(python对象、字符串)的数据._python读取json文件

推荐文章

热门文章

相关标签