关于配置文件的读取,网上资料也不少,但是针对性并不是很强。大部分也是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
相关推荐
将此项目生成一个jar 就可以动态的读取src及文件包下的配置文件了。类似于strust2中的读取default.properties文件,然后,如果,我们的项目中引入了struts.properties文件了,就以struts.properties为主。
以下是一些关于如何在Java中读取`src`目录下文件的关键知识点: 1. **项目结构**: - 通常,Java项目有一个标准的目录结构,如`src/main/java`用于存放Java源代码,`src/main/resources`用于存放资源文件,如配置...
本文将详细讲解如何在Winform中读取和修改配置文件,特别是`appSettings`部分,这对于大多数桌面应用来说是至关重要的功能。 配置文件在.NET Framework中通常以`.config`为扩展名,例如`app.config`或`web.config`...
java读取WEB-INFO下的配置文件,读取src下的配置文件,junit读取WEB-INFO下的配置文件
在读取配置文件的方法中,使用了`synchronized`关键字,确保多线程环境下对`HashMap`的操作是线程安全的。这是因为配置文件的读取可能会在多线程环境中发生,如果不加控制,可能会导致数据不一致或者读取失败。 ###...
大家都喜欢把配置文件放在src目录下,如果有10个以上的配置文件为什么不考虑在WEB-INF目录下新建一个文件夹,专门放配置文件;这样即好管理,文件安全性又高。亲问题已经解决,把源代码共享给大家,已经通过测试;...
在Java编程中,读取配置文件是常见的任务,特别是在构建可扩展和可维护的应用程序时。配置文件通常用于存储应用程序的设置、连接信息或其他敏感数据,这样可以将这些信息与核心代码分离,便于管理和更新。本篇文章将...
Linux 系统 shell脚本读取配置文件
首先,Spring MVC中的配置文件通常是指XML配置文件,如`applicationContext.xml`或`servlet-context.xml`,它们位于`src/main/resources`目录下。这些文件包含了Spring MVC应用的所有组件配置,如控制器(Controller...
c++读取XML配置文件C++中并没有操作XML文件的标准库,因此大家需要使用各自熟悉的XML库来解决XML文件的读取与写入。XML的一个重要用途是作为程序的配置文件,存储程序运行相关的各种数据。本文总结了使用libxml2库来...
### C# .NET读取INI配置文件的知识点详解 #### 一、概述 在软件开发过程中,经常会遇到需要根据不同的环境或用户需求调整程序配置的情况。例如,更改数据库连接字符串、FTP登录凭证等。传统的做法是在代码中硬编码...
本模块提供了一种在Ubuntu环境下使用C++读取INI配置文件的方法,使得开发者能方便地获取和修改配置信息。以下是关于这个功能模块的关键知识点和实现细节: 1. **INI文件格式**:INI文件是一种简单的文本格式,通常...
在Qt框架中,读取配置文件是常见的任务,这通常涉及到对XML格式的.INI文件进行操作。本文将深入解析如何使用Qt库中的QSettings类来实现这一功能,并结合给出的源码文件来阐述相关知识。 QSettings类是Qt提供的一种...
在这个“读取xml配置文件的flash导航菜单”项目中,开发人员创建了一个动态的Flash菜单系统,该系统能够从外部XML文件中获取其配置信息,从而实现菜单项的动态加载和更新。下面将详细解释这个技术实现的各个方面。 ...
JAVA 高手解析 XML 配置文件的读取操作 本文主要讲解了 Java 中如何读取 XML 配置文件,并对 XML 解析器进行了分类,分别介绍了 DOM 和 SAX 两种解析方式的特点和使用场景,并提供了一个使用 SAX 解析器读取 XML ...
在C++编程中,读取配置文件是一项常见的任务,它允许程序在运行时根据外部文件中的设置进行调整,而不是硬编码这些参数。本教程将详细讲解如何使用C++读取配置文件,特别是针对TXT格式的文件,因为它们简单且易于...
在C++编程中,读取配置文件是一项常见的任务,它允许程序员存储和加载应用程序的设置、参数或选项,而无需每次运行时重新编译代码。本篇将详细讲解如何使用C++来实现配置文件的读取功能。 首先,配置文件通常是文本...
Python标准库中的configparser模块为开发者提供了读取和写入INI格式配置文件的能力。 在本文中,我们将详细介绍如何使用Python来读取INI配置文件。首先,我们会解释什么是INI文件以及为什么它们在配置管理中很有用...
.net开发过程中读取项目下的配置文件的方法