Java项目中读取properties文件的具体步骤

下面1-4的内容是网上收集的相关知识,总结来说,就是如下几个知识点:

1、最常用读取properties文件的方法InputStream in = getClass().getResourceAsStream("资源Name");这种方式要求properties文件和当前类在同一文件夹下面。如果在不同的包中,必须使用:

InputStream ins =this.getClass().getResourceAsStream("/cn/zhao/properties/testPropertiesPath2.properties");

2、Java中获取路径方法

3、获取路径的一个简单实现

4、反射方式获取properties文件的三种方式

1 反射方式获取properties文件最常用方法以及思考:

Java读取properties文件的方法比较多,网上最多的文章是"Java读取properties文件的六种方法",但在Java应用中,最常用还是通过java.lang.Class类的getResourceAsStream(String name) 方法来实现,但我见到众多读取properties文件的代码中,都会这么干:

InputStream in = getClass().getResourceAsStream("资源Name");

这里面有个问题,就是getClass()调用的时候默认省略了this!我们都知道,this是不能在static(静态)方法或者static块中使用的,原因是static类型的方法或者代码块是属于类本身的,不属于某个对象,而this本身就代表当前对象,而静态方法或者块调用的时候是不用初始化对象的。

问题是:假如我不想让某个类有对象,那么我会将此类的默认构造方法设为私有,当然也不会写别的共有的构造方法。并且我这个类是工具类,都是静态的方法和变量,我要在静态块或者静态方法中获取properties文件,这个方法就行不通了。

那怎么办呢?其实这个类就不是这么用的,他仅仅是需要获取一个Class对象就可以了,那还不容易啊--              
取所有类的父类Object,用Object.class难道不比你的用你正在写类自身方便安全吗 ?呵呵,下面给出一个例子,以方便交流。

importjava.util.Properties; 

importjava.io.InputStream; 

importjava.io.IOException; 

  

/** 

* 读取Properties文件的例子 

* File: TestProperties.java 

* User: leizhimin 

* Date: 2008-2-15 18:38:40 

*/  

public final classTestProperties { 

   private staticString param1; 

   private staticString param2; 

  

   static{ 

    Properties prop =newProperties(); 

    InputStream in = Object.class.getResourceAsStream("/test.properties"); 

     try{ 

      prop.load(in); 

      param1 = prop.getProperty("initYears1").trim(); 

      param2 = prop.getProperty("initYears2").trim(); 

    }catch(IOException e) { 

      e.printStackTrace(); 

    } 

  } 

  

   /** 

   * 私有构造方法,不需要创建对象 

   */  

   privateTestProperties() { 

  } 

  

   public staticString getParam1() { 

     returnparam1; 

  } 

  

   public staticString getParam2() { 

     returnparam2; 

  } 

  

   public static voidmain(String args[]){ 

    System.out.println(getParam1()); 

    System.out.println(getParam2()); 

  } 

运行结果:  

151   
152   

当然,把Object.class换成int.class照样行,呵呵,大家可以试试。

另外,如果是static方法或块中读取Properties文件,还有一种最保险的方法,就是这个类的本身名字来直接获取Class对象,比如本例中可写成TestProperties.class,这样做是最保险的方法

2 获取路径的方式:

File fileB =newFile(this.getClass().getResource("").getPath());

System. out .println("fileB path: "+ fileB); 

2.2获取当前类所在的工程名:

System. out .println("user.dir path: "+ System. getProperty ("user.dir"))

3 获取路径的一个简单的Java实现

/**

  

   *获取项目的相对路径下文件的绝对路径

  

   *

  

   * @param parentDir

  

   *目标文件的父目录,例如说,工程的目录下,有lib与bin和conf目录,那么程序运行于lib or

  

   * bin,那么需要的配置文件却是conf里面,则需要找到该配置文件的绝对路径

  

   * @param fileName

  

   *文件名

  

   * @return一个绝对路径

  

   */

  

  publicstaticString getPath(String parentDir, String fileName) {

  

    String path =null;

  

    String userdir = System.getProperty("user.dir");

  

    String userdirName =newFile(userdir).getName();

  

    if(userdirName.equalsIgnoreCase("lib")

  

        || userdirName.equalsIgnoreCase("bin")) {

  

      File newf =newFile(userdir);

  

      File newp =newFile(newf.getParent());

  

      if(fileName.trim().equals("")) {

  

        path = newp.getPath() + File.separator + parentDir;

  

      }else{

  

        path = newp.getPath() + File.separator + parentDir

  

            + File.separator + fileName;

  

      }

  

    }else{

  

      if(fileName.trim().equals("")) {

  

        path = userdir + File.separator + parentDir;

  

      }else{

  

        path = userdir + File.separator + parentDir + File.separator

  

            + fileName; 

      }

  

    }

     returnpath;

  

  }

4 利用反射的方式获取路径:

InputStream ips1 = Enumeration .class.getClassLoader() .getResourceAsStream("cn/zhao/enumStudy/testPropertiesPath1.properties");

InputStream ips2 = Enumeration .class.getResourceAsStream("testPropertiesPath1.properties");

InputStream ips3 = Enumeration .class.getResourceAsStream("properties/test

时间: 2024-10-19 05:50:02

Java项目中读取properties文件的具体步骤的相关文章

java使用POI读取properties文件并写到Excel的方法_java

本文实例讲述了java使用POI读取properties文件并写到Excel的方法.分享给大家供大家参考.具体实现方法如下: package com.hubberspot.code; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import

java项目中,本地文件夹内有DOM4J,可是在myEclipse中不显示

问题描述 java项目中,本地文件夹内有DOM4J,可是在myEclipse中不显示 java项目中,本地文件夹内有DOM4J,可是在myEclipse中不显示 解决方案 你把jar拷过来放在lib下,再add build path 解决方案二: 你是不是设置过滤器了,jar包都不显示啊 解决方案三: java project的jar包并非在lib中,而是在这个jre system library里面,引用外部包的话是右键点击他.....................(具体步骤省略,,) 解决

java读取properties文件的方法_java

本文实例讲述了java读取properties文件的方法.分享给大家供大家参考.具体实现方法如下: package com.test.demo; import java.util.Properties; import java.io.InputStream; import java.io.IOException; /** * 读取Properties文件的例子 * File: TestProperties.java */ public final class TestProperties { p

java读取properties文件的方法

  本文实例讲述了java读取properties文件的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 package com.t

java web-在java项目中打开外部文件

问题描述 在java项目中打开外部文件 在项目开发中,界面有一个字段用于填写外部文件夹的地址类似"xmcode"这样,然后需要通过点击这个地址打开相应的文件夹, <a href="//xm/code"> 在IE可以使用,但在ff和chrome不行,打开的时候会自动带上项目的域名,另外使用 file:前缀也不行 解决方案 这就是兼容问题,所以最好要写成全称 解决方案二: 解决方案三: <a href="//xm/code">

java读取properties文件

关键字: java读取properties配置文件 今天要将以前一个项目的数据连接改成从properties文件中配置.找了好久,网上也不少,可就是读取文件时总是找不到文件在哪(我放在classes目录下了).最后终于成功,记下,以做纪念. Java代码 package com.web.connection; import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.s

java读取properties文件的方法实例分析_java

本文实例讲述了java读取properties文件的方法.分享给大家供大家参考.具体分析如下: 1.不在项目中读取: Properties properties = new Properties(); BufferedReader read = new BufferedReader(new InputStreamReader(new FileInputStream("文件的路径"),"utf-8")); properties.load(read); properti

关于在java项目中能不能引用xmind的文件呢?

问题描述 关于在java项目中能不能引用xmind的文件呢? xmind生成的 XXX.xmind的文件 能不能在java/jsp/html中直接引用呢 就是让xmind在页面上能显示出来 有什么JAR包 js/css之类的引用?

java 运行中读取修改后文件的问题

问题描述 java 运行中读取修改后文件的问题 我用java读取一个txt文件,然后输出里面的内容, File f = new File(path); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f))); System.out.println(br.readLine()); 然后这边打个断点,之后去修改txt的内容. System.out.println("wait"