`
cuisuqiang
  • 浏览: 3962739 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3672110
社区版块
存档分类
最新评论

关于读取Src下配置文件的那个传说

    博客分类:
  • J2EE
阅读更多

关于配置文件的读取,网上资料也不少,但是针对性并不是很强。大部分也是Copy,而且方式单一,下面我来总结一下关于读取Src,即class下配置文件的方式以及区别。

首先我们来定义一个工程,建立一个Servlet,请求到后台后再转向该页面。主要看Servlet代码处理部分。然后在Src下建立一个配置文件config.properties,定义一个属性name。

 

第一种:

类加载方式,这个在网上那可是一片的解释,可是终归到底就是使用类加载器进行加载,没有其他两样!

主要代码:

try {
	Properties p = new Properties();
	// 配置文件在class下,即Src下
	p.load(TS.class.getClassLoader().getResourceAsStream("config.properties"));
	String p1 = p.getProperty("name");
	System.out.println("加载方式:" + p1);
} catch (Exception e) {
	e.printStackTrace();
}

 

类加载器的获得方式写法不一,但是我看就使用本类class就行了。获得配置文件的流进行解析。

 

第二种:

我自己成为邦定的方法,邦定一个配置文件然后直接读取属性,这个配置文件可以在任何包下面

主要代码:

try {
	// 可以加包名,例如com.config指的是com包下config.properties这个配置文件
	ResourceBundle resbun = ResourceBundle.getBundle("config");
	String p1 = resbun.getString("name");
	System.out.println("邦定方式:" + p1);
} catch (Exception e) {
	e.printStackTrace();
}

 

第三种:

在Web工程中我们都可以获得系统的request对象,这个对象可以获得请求的一些属性,也可以获得系统的一些信息,通过这个对象可以得到系统的路径信息,然后得到配置文件物理文件,再得到文件流然后解析。

但是如果使用了绝对路径,那就应该注意路径分隔符的书写方式,因为在Windows和Linux下的写法是不一样的。我们通过环境属性得到系统文件分隔符然后再进行组装。

String realpath = request.getSession().getServletContext().getRealPath("");
try {
	Properties p = new Properties();
	// 获得文件系统分隔符
	String spa = System.getProperty("file.separator");
	// 通过绝对路径获得文件然后获得流
	File file = new File(realpath + spa + "WEB-INF" + spa +"classes" + spa + "config.properties");
	FileInputStream fis = new FileInputStream(file);
	p.load(fis);
	String p1 = p.getProperty("name");
	System.out.println("本地方式:" + p1);
} catch (Exception e) {
	e.printStackTrace();
}

 

通过路径组装信息可以看到,这个方法同样可以读取在WEB-INF下定义的配置文件。

 

第四种:

我自己叫做属性方式,首先得到环境信息,然后通过系统自己加载某个配置文件。

 

try {
	Properties p = new Properties();
	ServletContext ctx = request.getSession().getServletContext();
	// 通过环境变量获得配置文件流
	p.load(ctx.getResourceAsStream("WEB-INF/classes/config.properties"));
	String p1 = p.getProperty("name");
	System.out.println("属性方式:" + p1);
} catch (Exception e) {
	e.printStackTrace();
}		
response.sendRedirect("index.jsp");
}

 

通过代码可以看到,这个方法同样可以读取WEB-INF下的文件。

 

但是以上四种方法有什么区别吗?

以我自己的看法来说,前两种方法是依赖类加载器的,而后面两个没有。而且后面两个方法可以获得WEB-INF下的配置文件,而前两种不可以。

另外最大的区别是,前两种方法读取后如果配置文件被修改,再调用进行读取的话,不能得到修改后的属性

我们可以测试,你进入index.jsp后,点击查看后台输出。然后在服务器上直接修改配置文件,再点击查看输出,发现后两种方法读取到了修改后的属性。

 

最后源码附上,请多指教!

 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

 

  • T.rar (4.9 KB)
  • 下载次数: 47
分享到:
评论
1 楼 cuisuqiang 2012-03-19  
有人想通过直接使用File对象获得文件,其实直接创建File对象这个File对象的根路径在Tomcat上因为指向的是Bin目录,而不是自己的项目根路径,这个大家应该注意!

相关推荐

    读取src下的文件及自己包下的配置文件

    将此项目生成一个jar 就可以动态的读取src及文件包下的配置文件了。类似于strust2中的读取default.properties文件,然后,如果,我们的项目中引入了struts.properties文件了,就以struts.properties为主。

    C# winform 读取修改配置文件

    本文将详细讲解如何在Winform中读取和修改配置文件,特别是`appSettings`部分,这对于大多数桌面应用来说是至关重要的功能。 配置文件在.NET Framework中通常以`.config`为扩展名,例如`app.config`或`web.config`...

    保存INI配置文件和读取配置文件

    INI 配置文件的保存和读取 INI 配置文件是一种常见的文件格式,用于存储程序的配置信息。它是一种简单的持久化机制,允许程序在启动时初始化配置信息。INI 文件由多个节(Section)组成,每个节中可以有多个键名...

    spring读取jar中的配置文件

    为了使Spring Boot能够找到JAR内的配置文件,可以在`src/main/resources`目录下创建`META-INF/spring.factories`文件,并添加以下内容: ``` org.springframework.boot.autoconfigure.EnableAutoConfiguration=...

    封装读取配置文件

    在读取配置文件的方法中,使用了`synchronized`关键字,确保多线程环境下对`HashMap`的操作是线程安全的。这是因为配置文件的读取可能会在多线程环境中发生,如果不加控制,可能会导致数据不一致或者读取失败。 ###...

    java读取配置文件

    在Java编程中,读取配置文件是常见的任务,特别是在开发需要灵活配置的系统时。配置文件通常用于存储应用程序的设置,如数据库连接信息、服务器端口、第三方服务的API密钥等,这些信息可能需要根据不同的环境或需求...

    java读取WEB-INF或src目录下的properties配置文件

    大家都喜欢把配置文件放在src目录下,如果有10个以上的配置文件为什么不考虑在WEB-INF目录下新建一个文件夹,专门放配置文件;这样即好管理,文件安全性又高。亲问题已经解决,把源代码共享给大家,已经通过测试;...

    LabVIEW 写入与读取配置文件

    本教程将深入探讨如何在LabVIEW中进行配置文件的写入与读取操作。 一、配置文件的类型 1. .ini 文件:这是一种文本格式的配置文件,通常包含键值对,用于存储程序的设置。例如,你可以保存用户的界面偏好、设备...

    Linux shell 脚本读取配置文件

    Linux 系统 shell脚本读取配置文件

    spring mvc 读取配置文件

    首先,Spring MVC中的配置文件通常是指XML配置文件,如`applicationContext.xml`或`servlet-context.xml`,它们位于`src/main/resources`目录下。这些文件包含了Spring MVC应用的所有组件配置,如控制器(Controller...

    c++读取XML配置文件

    c++读取XML配置文件C++中并没有操作XML文件的标准库,因此大家需要使用各自熟悉的XML库来解决XML文件的读取与写入。XML的一个重要用途是作为程序的配置文件,存储程序运行相关的各种数据。本文总结了使用libxml2库来...

    C# .net读取ini配置文件

    ### C# .NET读取INI配置文件的知识点详解 #### 一、概述 在软件开发过程中,经常会遇到需要根据不同的环境或用户需求调整程序配置的情况。例如,更改数据库连接字符串、FTP登录凭证等。传统的做法是在代码中硬编码...

    ubuntu系统读取ini配置文件

    本模块提供了一种在Ubuntu环境下使用C++读取INI配置文件的方法,使得开发者能方便地获取和修改配置信息。以下是关于这个功能模块的关键知识点和实现细节: 1. **INI文件格式**:INI文件是一种简单的文本格式,通常...

    Qt读取配置文件的源码

    在Qt框架中,读取配置文件是常见的任务,这通常涉及到对XML格式的.INI文件进行操作。本文将深入解析如何使用Qt库中的QSettings类来实现这一功能,并结合给出的源码文件来阐述相关知识。 QSettings类是Qt提供的一种...

    读取xml配置文件的flash导航菜单

    在这个“读取xml配置文件的flash导航菜单”项目中,开发人员创建了一个动态的Flash菜单系统,该系统能够从外部XML文件中获取其配置信息,从而实现菜单项的动态加载和更新。下面将详细解释这个技术实现的各个方面。 ...

    JAVA高手解析XML配置文件的读取操作.pdf

    JAVA 高手解析 XML 配置文件的读取操作 本文主要讲解了 Java 中如何读取 XML 配置文件,并对 XML 解析器进行了分类,分别介绍了 DOM 和 SAX 两种解析方式的特点和使用场景,并提供了一个使用 SAX 解析器读取 XML ...

    c# 通过配置文件读取数据库连接字符创,读取配置文件值

    在C#编程中,配置文件是一个非常重要的组成部分,它允许开发者在不修改代码的情况下更改应用程序的行为。本篇文章将深入探讨如何使用C#通过配置文件读取数据库连接字符串和其他配置值,以及这样做的好处。 首先,...

    c++读取配置文件

    在C++编程中,读取配置文件是一项常见的任务,它允许程序在运行时根据外部文件中的设置进行调整,而不是硬编码这些参数。本教程将详细讲解如何使用C++读取配置文件,特别是针对TXT格式的文件,因为它们简单且易于...

    C#开发读取本地配置文件

    .net开发过程中读取项目下的配置文件的方法

Global site tag (gtag.js) - Google Analytics