java相对路径设置

 在java中相对路径的设置是一个比较头痛的问题:配置文件应该写在哪里,"/","./"等各自代表着什么含义,普通的java工程和jsp(servlet)的路径有什么不同,这都是我们特别需要留意的。不然在程序开发中会死得很惨(个人以前深有体会,看似很简单的路径设置,往往要花很多的时间才能搞定)。

 一、Java Project

      1. 普通目录的读取

      java相对路径设置_第1张图片

      如果com.taobao.jifeng下的TestPath.java要读取jifeng文件夹下的file.txt文件,路径设置为

      

[c-sharp]  view plain copy
  1. File file = new File("jifeng/file.txt");  
 

ps:在这里“jifeng/file.txt”就是从该工程首目录开始的,而“/”开始表示的是绝对路径,“./jifeng/file.txt”的作用和“jifeng/file.txt”的路径设置时相同的

 

      2. 读取properties文件

      java相对路径设置_第2张图片

       从TestProperties.java读取与它同目录下的config.default.properties文件,在java工程中properties的配置文件是被当做跟*.java文件一样使用的。

[c-sharp]  view plain copy
  1. Properties properties = new Properties();   
  2. InputStream is = null;    
  3. is = TestProperties.class.getResourceAsStream("/com/taobao/jifeng/properties/config.default.properties");  
  4. try {  
  5.     properties.load(is);  
  6.     String key = "name";  
  7.     System.out.println(properties.getProperty(key));  
  8.       
  9. catch (IOException e) {  
  10.     // TODO Auto-generated catch block  
  11.     e.printStackTrace();  
  12. }  
 

properties文件的具体操作可以参见:java中的Properties文件操作使用举例

ps:properties文件的读取方式大致是相同的,无论是javaproject,servlet等

 

 二、可运行的jar文件

文件位置

 

[c-sharp] view plain copy
  1. File file = new File("jifeng/file.txt");  

 

三、Servlet(JSP),服务器是JBOSS

     1. 页面之间的跳转,加入工程名为WebAndesProject,情况一和情况二相等

情况一

[c-sharp]  view plain copy
  1. <form action=/"./GetResultJSON/">" +  
  2. "</form>"  
 

情况二:

[c-sharp]  view plain copy
  1. "<form action=/"/WebAndesProject/GetResultJSON/">" +  
  2. "</form>"  
 

在servlet或jsp中“/”表示的jboss的总目录,"./"表示的是jboss下面该工程的目录,servlet路径可设置

 

    2. 读取文件

文件位置:

java相对路径设置_第3张图片

servlet的获取其绝对路径的写法:

[c-sharp]  view plain copy
  1. String path = request.getRealPath("config/config.default.properties");  
 

 

四、log4j中路径的设置

Log4J的位置,在myeclipse开发时

java相对路径设置_第4张图片

log4j.properties中的内容:

[c-sharp]  view plain copy
  1. log4j.appender.log = org.apache.log4j.DailyRollingFileAppender  
  2. log4j.appender.log.File = hp/log.log  
  3. log4j.appender.log.Append = true  
  4. log4j.appender.log.Threshold = INFO  
  5. log4j.appender.log.DatePattern='.'yyyy-MM-dd  
  6. log4j.appender.log.layout = org.apache.log4j.PatternLayout  
  7. log4j.appender.log.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t ] %m%n  
 

 

正式部署到jboss时,日志生成会在jboss/bin/hp/log.log目录下

五、java通用相对路径获得跟目录代码

package com.util;
/**  
 * TODO 取得当前项目的根目录  
 * @author  
 * @version
 */  
public class Application {   
           
    /**  
     * TODO 获取根目录  
     * @return  
     * @author  
     */  
    public static String getRootPath(){   
        //因为类名为"Application",因此" Application.class"一定能找到   
        String result = Application.class.getResource("Application.class").toString();   
        int index = result.indexOf("WEB-INF");   
        if(index == -1){   
            index = result.indexOf("bin");   
        }   
        result = result.substring(0,index);   
        if(result.startsWith("jar")){   
            // 当class文件在jar文件中时,返回"jar:file:/F:/ ..."样的路径    
            result = result.substring(10);   
        }else if(result.startsWith("file")){   
            // 当class文件在class文件中时,返回"file:/F:/ ..."样的路径    
            result = result.substring(6);   
        }   
        if(result.endsWith("/"))result = result.substring(0,result.length()-1);//不包含最后的"/"   
        return result;   
    }   
}  


你可能感兴趣的:(java相对路径设置)