Java基础学习总结(15)——java读取properties文件总结
一、java读取properties文件总结
在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResourceAsStream方法和InputStream流去读取properties文件,使用getResourceAsStream方法去读取properties文件时需要特别注意properties文件路径的写法,测试项目如下:
1.1.项目的目录结构
1.2. 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文件总结的更多相关文章
- java基础学习03(java基础程序设计)
java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...
- java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)
最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有“01”构成,最早 ...
- Java基础学习笔记一 Java介绍
java语言概述 Java是sun公司开发的一门编程语言,目前被Oracle公司收购,编程语言就是用来编写软件的. Java的应用 开发QQ.迅雷程序(桌面应用软件) 淘宝.京东(互联网应用软件) 安 ...
- Java基础面试操作题:读取该文件内容,并按照自然顺序排序后输出到 另一个文件中
package com.swift; import java.io.FileInputStream; import java.io.FileNotFoundException; import java ...
- JAVA基础学习——1.0 Java概述
Java语言 SUN公司 1995年推出的高级编程语言 ■ 主要应用方向 Web开发和Android开发 ■ 主要特点 平台无关性:能运行于不同的平台上 安全性:去掉了指针操作,内存由操作 ...
- Java基础学习笔记十 Java基础语法之final、static、匿名对象、内部类
final关键字 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后,就可以对 ...
- Java基础学习总结(50)——Java事务处理总结
一.什么是Java事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isol ...
- java===java基础学习(15)---抽象,接口
抽象 //这就是一个抽象类 abstract class Animal { String name; int age; abstract public void cry(); } //当一个类继承的父 ...
- Java基础学习笔记二 Java基础语法
注释 注释用来解释和说明程序的文字,注释是不会被执行的. 单行注释 //这是一条单行注释 public int i; 多行注释 /* 这是 * 一段注释, * 它跨越了多个行 */ public vo ...
- Java基础学习(六)-- 递归以及文件I/O流基础详解
递归 1.递归的概念: 在函数自身内部,调用函数本身的方式,称为递归. 2.递归的注意事项:包括递进去,归出来两步. 即:首先依次执行[函数调自身语句]上半部分的代码,知道最里层.(递进去),然后 ...
随机推荐
- 【算法】Kruskal算法(解决最小生成树问题) 含代码实现
Kruskal算法和Prim算法一样,都是求最小生成树问题的流行算法. 算法思想: Kruskal算法按照边的权值的顺序从小到大查看一遍,如果不产生圈或者重边,就把当前这条边加入到生成树中. 算法的正 ...
- 阿里云ecs : Couldn't connect to host, port: smtp.aliyun.com, 25; timeout -1;
上传到服务器后javamail发邮件异常 链接 原来是ECS基于安全考虑,禁用了端口25. 改成465就可以发邮件了. p.setProperty("mail.smtp.socketFact ...
- NOI2018 你的名字 后缀自动机_线段树合并_可持久化
相当复杂的一道题,同样也相当优美.考察的知识点很多:权值线段树的可持久化合并,后缀自动机,后缀树... 考虑 $68pts$ $l=1,r=|s|$的数据:这部分相对好做一些,不过思维难度对我来说已 ...
- 滴滴云安装mysql数据库
Linux CentOS安装配置MySQL数据库 没什么好说的,直接正面刚吧. 安装mysql数据库 a)下载mysql源安装包:wget http://dev.mysql.com/get/mys ...
- Node_进阶_3
Express框架: 一. Express框架 Express框架是后台的Node框架,类似于JS中的jquery. #原生Node开发会有很多问题: 1呈递静态页面很不方便,需要处理每个HTTP ...
- javascript中实现继承的几种方式
javascript中实现继承的几种方式 1.借用构造函数实现继承 function Parent1(){ this.name = "parent1" } function Chi ...
- php nusoap类的使用、用法、出错 及说明
NuSOAP 是 PHP 环境下的 WEB 服务编程工具,用于创建或调用 WEB 服务它是一个开源软件,当前版本是 0.7.2 ,支 持 SOAP1.1 WSDL1.1 ,可以与其他支持 SOAP1. ...
- POJ-3159 Candies 最短路应用(差分约束)
题目链接:https://cn.vjudge.net/problem/POJ-3159 题意 给出一组不等式 求第一个变量和最后一个变量可能的最大差值 数据保证有解 思路 一个不等式a-b<=c ...
- CF587F Duff is Mad(AC自动机+树状数组+分块)
考虑两一个暴力 1 因为询问\([a,b]\)可以拆成\([1,b]\)-\([1,a-1]\)所以把询问离线,然后就是求\([1,x]\)中被\(S_i\)包含的串的数量.考虑当\([1,x-1]- ...
- [NOIP2015普及组]推销员
题目:洛谷P2672.codevs5126.Vijos P1977 题目大意:有个推销员要去推销,要你求他推销1~n户人家分别最多花多少“疲劳值”.具体见题目. 解题思路:如果用$O(n^2)$做的话 ...