一、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文件总结的更多相关文章

  1. java基础学习03(java基础程序设计)

    java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...

  2. java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有“01”构成,最早 ...

  3. Java基础学习笔记一 Java介绍

    java语言概述 Java是sun公司开发的一门编程语言,目前被Oracle公司收购,编程语言就是用来编写软件的. Java的应用 开发QQ.迅雷程序(桌面应用软件) 淘宝.京东(互联网应用软件) 安 ...

  4. Java基础面试操作题:读取该文件内容,并按照自然顺序排序后输出到 另一个文件中

    package com.swift; import java.io.FileInputStream; import java.io.FileNotFoundException; import java ...

  5. JAVA基础学习——1.0 Java概述

    Java语言 SUN公司  1995年推出的高级编程语言 ■  主要应用方向 Web开发和Android开发 ■  主要特点 平台无关性:能运行于不同的平台上    安全性:去掉了指针操作,内存由操作 ...

  6. Java基础学习笔记十 Java基础语法之final、static、匿名对象、内部类

    final关键字 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后,就可以对 ...

  7. Java基础学习总结(50)——Java事务处理总结

    一.什么是Java事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isol ...

  8. java===java基础学习(15)---抽象,接口

    抽象 //这就是一个抽象类 abstract class Animal { String name; int age; abstract public void cry(); } //当一个类继承的父 ...

  9. Java基础学习笔记二 Java基础语法

    注释 注释用来解释和说明程序的文字,注释是不会被执行的. 单行注释 //这是一条单行注释 public int i; 多行注释 /* 这是 * 一段注释, * 它跨越了多个行 */ public vo ...

  10. Java基础学习(六)-- 递归以及文件I/O流基础详解

    递归 1.递归的概念: 在函数自身内部,调用函数本身的方式,称为递归. 2.递归的注意事项:包括递进去,归出来两步.   即:首先依次执行[函数调自身语句]上半部分的代码,知道最里层.(递进去),然后 ...

随机推荐

  1. vmware workstation pro 14 虚拟机无法开启、黑屏的解决方案汇总

    方案1:卸载鲁大师,重启. 方案2:管理员命令行,输入netsh winsock reset,重启. 方案3:360安全管家修复LSP,重启. 方案4:卸载14.0,安装12.0,手动导入虚拟机.

  2. 51nod 1402 最大值 3级算法题 排序后修改限制点 时间复杂度O(m^2)

    代码: 题意,第一个数为0,相邻的数相差0或者1,有一些点有限制,不大于给定值,求这组数中可能的最大的那个数. 这题我们看一个例子:第5个数的限制为2 1 2 3 4 5 6 7 8 9 0 1 2 ...

  3. QT笔记 -- (4) 为QLabel添加鼠标响应方法2

    1.实现 bool eventFilter(QObject *target,QEvent *event) 函数内容如下: bool eventFilter(QObject *target,QEvent ...

  4. HDU 1171 Big Event in HDU【01背包】

    题意:给出n个物品的价值和数目,将这一堆物品分给A,B,问怎样分使得两者的价值最接近,且A的要多于B 第一次做的时候,没有思路---@_@ 因为需要A,B两者最后的价值尽可能接近,那么就可以将背包的容 ...

  5. CentOS7 安装 MySQL 5.7

    wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz yum -y ...

  6. 一张图说docker

  7. Python学习————列表的增删改查

    增加:li.append(对象):追加 注:print(li.append())--->是Noneli.insert(索引,对象):插入到相应位置li.extend(对象):可迭代的添加到尾部, ...

  8. UVA Foreign Exchange

    Foreign Exchange Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Your non ...

  9. 【iOS开发-47】怎样下载iOS 7.1 Simulator 以及iOS 8离线的Documentation这些文件?

    (1)最官方的解决的方法 在Xcode6里面提供下载. 依照下图找到下载就可以. 一般建议把以下的自己主动检查更新和下载的框框勾起来,这样它会帮我们自己主动下载. watermark/2/text/a ...

  10. 二维码框架ZBarSDK的使用和自己定义二维码扫描界面方法

    假设你不知道ZBarSDK怎么用,请下载demo http://download.csdn.net/detail/u013686641/7858917 假设你已经配置好ZBarSDK .那么以下这个类 ...