`
osacar
  • 浏览: 212383 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

javaweb读取任意目录的下的properties配置文件(解决普通java类读web-inf下任意目录)

    博客分类:
  • JAVA
阅读更多
看到很多用getResourcesAsStream()来读取.properties文件,但是对.properties文件的路径有要求,至少要和包的根目录在同一目录,对于这点,我也是迷糊了好久,就是没有想通,咋个getResourcesAsStream("/var/config.properties") 会返回null,明明文件是在的,就是因为这里的“根目录” 和通常讲的根目录还不一样。
然而,一般,我喜欢把web的配置文件放到WEB-INF里,和web.xml 文件放在一起,如果用getResourcesAsStream()肯定是不行了。
仔细想了一下,找到一个变通的方法:

例如:文件在WEB-INF/url/url.properties。

    private String readRcErpURL(){  
          try{  
                 String url = this.getClass().getResource("").getPath().replaceAll("%20", " ");  
                 String path = url.substring(0, url.indexOf("WEB-INF")) + "WEB-INF/url/url.properties";  
                 Properties config = new Properties();  
                 config.load(new FileInputStream(path));  
                 return config.getProperty("rcerp.url");  
             }  
             catch(Exception e){  
                 e.printStackTrace();  
             }  
          return null;  
         }  


下面四种方式都可以得到webroot/WEB-INF/classes这个路径,有什么区别,哪种方式最好?
String path = this.getClass().getResource("/").getPath();
String path2 = this.getClass().getClassLoader().getResource("/").getPath();
String path3 = Thread.currentThread().getContextClassLoader().getResource("").getPath();
String path4 = pageContext.getServletContext().getRealPath("/")+ "/WEB-INF/classes/ ;

个人认为第三种
第一种有线程安全问题
第二种在liunx下不能用是因为liunx不是用“/”而是用“/”所以没有跨平台性
第四种使用起来不够灵活配置文件不能移动到其它文件夹下
分享到:
评论

相关推荐

    javaweb 读取 classes 下的文件

    在Java Web开发中,有时我们需要从应用程序的`classes`目录或者对应的`WEB-INF/classes`目录中读取资源文件,例如配置文件、静态内容或者数据库连接字符串等。这通常发生在我们想要在运行时加载非代码的资源,而这些...

    JavaWeb_servlet(11)_ 通过 ServletContex 获得类路径下的文件路径

    总之,通过ServletContext,JavaWeb开发者可以方便地在类路径下查找和操作文件,这对于管理应用配置、读取静态资源和实现文件上传等操作具有重要作用。在进行Servlet编程时,熟练掌握ServletContext的使用,能够提高...

    JavaWeb读取配置文件的四种方法

    这种方法灵活,可以在任何地方读取类路径下的配置文件,包括`WEB-INF/classes`和`lib`目录下的JAR文件中的配置。 4. **使用Java的FileInputStream或FileReader** 当配置文件位于硬盘上的某个路径时,可以使用`...

    管理系统系列--J2EE项目系列(一)--运用MVC模式及JavaWeb三层框架的学生管理系统。.zip

    3. **资源文件**:如`src/main/resources`目录下的数据库连接配置(如`applicationContext-dao.xml`)、JDBC驱动、国际化文件(`.properties`)等。 4. **静态资源**:如`Web-INF/static`或`Web-INF/resources`下的...

    JavaWeb购物商城项目.zip

    - `WEB-INF/classes`目录:编译后的Java类文件会被部署到这里。 - `resources`目录:可能包含数据库连接配置文件,如`db.properties`。 5. **开发流程**:项目开发通常涉及以下步骤: - 设计数据库模型,创建表...

    JavaWeb项目,基于狂神的smbms的修改使用jdk1.8 mysql8.0

    1. **src**:源代码目录,包括Java类、配置文件等。 - **main/java**:存放业务逻辑和模型对象的Java源代码。 - **main/resources**:存储配置文件、数据库连接字符串、国际化文件等。 2. **webapp**:Web应用...

    JAVA WEB链接数据库

    将这个jar添加到Java Web项目的类路径中,可以通过在`WEB-INF/lib`目录下放置该jar来实现。 接下来,配置数据库连接参数。这些参数包括数据库URL、用户名和密码,通常保存在配置文件如`db.properties`中,如下所示...

    Java Web中解决路径(绝对路径与相对路径)问题

    当需要访问服务器上的文件时,如读取配置文件或上传的文件,可以使用此方法。例如,`context.getRealPath("/WEB-INF/config.properties")`将返回`/var/www/html/myapp/WEB-INF/config.properties`。 2. **利用类...

    JavaWeb项目中classpath路径详解

    classpath路径是指WEB-INF文件夹下的classes目录,它是存放各种资源配置文件、模板文件和class文件的地方。 在使用ssh等框架开发web程序时,配置文件(xml和properties)存放的路径一般为src下,当部署程序时则必须...

    JCrontab简单入门实例详解

    示例中的配置指定了crontab.xml位于WEB-INF目录下,并使用Apache Xerces解析器。 crontab.xml是JCrontab的核心配置文件,它定义了具体的定时任务。在本例中,我们看到一个名为"2014"的任务,其`<seconds>`标签设置...

Global site tag (gtag.js) - Google Analytics