Java读取资源文件的那些事
来源:互联网 发布:mysql约束是什么 编辑:程序博客网 时间:2024/04/28 12:30
本文主要讲解和总结java读取properties/xml等资源文件的几种方法,以备来日使用时翻阅。无论是Servlet、Struts或者Spring、Hibernate,配置资源文件都是必不可少的一项工作,Java中主要提供了提供了2个类来读取资源文件,一个是Class类,一个是ClassLoader类。我们一步步来分析,要获取一个文件的内容,那第一步肯定是要先获取文件的路径,第二步才是读取文件内容。
本文地址:http://blog.csdn.net/chen_zw/article/details/18771897
步骤一:获取资源文件路径
java的Web项目结构相信大家应该都很熟悉,它大概是这样的:
如上图所示,它主要分为了3部分,一个是source folder(src目录下),一个是output folder(build目录下),最后一个是deploy path(WebRoot) ,可能大家的命名不一样,但这3部分对应的功能是一致的。想修改这3部分对应的文件目录,可以选中项目,右键选properties,然后选中Java Build Path进行修改,如下图所示:
首先说下source folder目录,这个目录下存放的是项目java源码,也就是可阅读、可编写的代码。而output folder目录则存放着java源码编译后生成的字节码,是.class文格式的,最后是deploy path目录,这是javaWeb项目独有的,主要存放的是Web相关的jar包、配置文件和网页资源等。我们可能将要读取的资源文件放在在source folder(src )或者deploy path(WebRoot )目录下,而两者的读取方式也是不同的。
我们先来看看放在source folder(src )目录下的资源文件如何读取的吧,假设资源文件放置在这里:
public class PropertiesUtil {/** * @Description: 我们使用Class.getResourceAsStream(String path)方法来获取资源文件 * @author: chenzw * @CreateTime: 2014-1-25 下午7:02:40 * @param args * @throws */public static void main(String[] args) {/* path中不以'/'开头表示该路径是相对路径,相对于当前类所在的目录 */InputStream is = PropertiesUtil.class.getResourceAsStream("cfg/jdbc.properties");// 等同于 InputStream is = this.getClass().getResourceAsStream("cfg/jdbc.properties"); --this.getClass()不能在static方法中使用/* path中以'/'开头表示该路径是绝对路径,相对于classpath的绝对路径 */InputStream is2 = PropertiesUtil.class.getResourceAsStream("/com/util/cfg/jdbc.properties");// 等同于 InputStream is2 = this.getClass().getResourceAsStream("/com/util/cfg/jdbc.properties"); --this.getClass()不能在static方法中使用// 等同于 InputStream is2 = Thread.currentThread().getClass().getResourceAsStream("/com/util/cfg/jdbc.properties");/* 使用getClassLoader()表示该路径是相对于classpath目录的相对路径*/InputStream is3 = PropertiesUtil.class.getClassLoader().getResourceAsStream("com/util/cfg/jdbc.properties");// 等同于 InputStream is3 = this.getClass().getClassLoader().getResourceAsStream("com/util/cfg/jdbc.properties"); --this.getClass()不能在static方法中使用 // 等同于 InputStream is3 = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/util/cfg/jdbc.properties");//这3种方式获取的资源文件是同一个。}}再来看看放在WebRoot目录下的资源文件是怎么读取的,假设资源文件存放在这里:
步骤二:读取资源文件
package com.util;import java.io.IOException;import java.io.InputStream;import java.util.Properties;public class PropertiesUtil {/** * @throws IOException * @Description: 我们使用Class.getResourceAsStream(String path)方法来获取资源文件 * @author: chenzw * @CreateTime: 2014-1-25 下午7:02:40 * @param args * @throws */public static void main(String[] args) throws IOException {//资源文件路径的多种获取方法详见步骤一InputStream is = PropertiesUtil.class.getResourceAsStream("cfg/jdbc.properties");Properties ps = new Properties();//加载properties资源文件ps.load(is);System.out.println(ps.getProperty("jdbc.url"));System.out.println(ps.getProperty("jdbc.user"));System.out.println(ps.getProperty("jdbc.pass"));}}
- Java读取资源文件的那些事
- Java读取资源文件的那些事
- java读取资源文件
- java读取资源文件:
- java读取资源文件
- Java资源文件读取
- java读取资源文件
- Java 读取资源文件
- java读取资源文件
- java读取资源文件
- Java读取资源文件
- Java资源文件读取
- java读取资源文件--使用文件流的方式读取
- java读取资源文件的方式
- java读取资源文件的方法
- 用普通的java读取资源文件
- Java读取项目内的资源文件
- 资源文件的读取
- Minimum Spanning Tree.prim/kruskal(并查集)
- DataGridView合并单元格
- Hdu 1072 Nightmare
- js中setInterval与setTimeout用法
- Makefile------宏、if条件、shell命令的使用
- Java读取资源文件的那些事
- Linux内核源码分析方法
- linux下面的qq2013...
- ubuntu 12.04中安装thrift-0.9.1
- Unity3D教程宝典之 FX Maker
- CRM上线之路 走上了CRM实施顾问-第123天上班 -第25周
- 系统设计文档结构体例理解与决策
- 关于spring的配置文件的分模块策略
- Jos-lab3 Exercise 7&9