Java获取绝对路径一些问题解决方法

先看一个实例

 代码如下 复制代码

// 获取对象的绝对路径
public static String realpath(Object obj) throws URISyntaxException {
 return new File(obj.getClass().getResource("").toURI()).getAbsolutePath();
}

一般情况下不需要直接使用绝对路径,使用流就可以了,this.getClass().getResourceAsStream(filename)。
如果要获取项目的根路径,把代码中obj.getClass()换成obj.getClass().getClassLoader()就可以了。
System.getProperty(“user.dir”) 用户的当前工作目录,这个应该和环境有关系,在eclipse中是src的上层目录。
其他信息自己看JDK API就明白了。

 代码如下 复制代码

/**
 * 对象所在目录的绝对路径,也就是包的绝对路径
 *
 * @param obj
 *            Object
 *
 * @return String
 */
public static String getClassPath(Object obj) throws URISyntaxException {
 return new File(obj.getClass().getResource("").toURI())
   .getAbsolutePath();
}

/**
 * 获取当前项目的根路径(绝对路径)
 *
 * @param obj
 *            Object
 *
 * @return String
 */
public static String getProjectPath(Object obj) throws URISyntaxException {
 return new File(obj.getClass().getClassLoader().getResource("").toURI())
   .getAbsolutePath();
}

如果我一个在取得项目中的绝对路径

一般用request.getRealPath("/")或request.getRealPath("/config/")

  但现在不提倡使用request.getRealPath("/")了,大家可试用ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径

要取得src的文件非常容易,因为src是默认的相对目录,比如你说要取得src下com目录的test.java文件,你只需要这样就够了

 代码如下 复制代码

File f = new File(com/test.java);

但如果我要取得不在src目录或者WebRoot目录下的文件呢,而是要从src或者WebRoot同级的目录中取呢,比如说doc吧我的硬方法是这样实现的:

 代码如下 复制代码

String path = this.getServletContext().getRealPath("/");

Properties p = new Properties();

p.load(new FileInputStream(new File(path.substring(0,(path.lastIndexOf("//WebRoot") + 1)) + "doc/db.properties")));

System.out.println(p.getProperty("driverName"));

时间: 2024-07-29 11:46:41

Java获取绝对路径一些问题解决方法的相关文章

java获取各种路径的基本方法_java

本文实例为大家分享了java获取不同路径的方法,供大家参考,具体内容如下 package com.ygh.blog.realpath; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Properties; /** * 获取java下面的路径的演示 */ import org.junit.Test; public c

JAVA获取CLASSPATH路径的方法详解_java

ClassLoader 提供了两个方法用于从装载的类路径中取得资源: public URL getResource (String name); public InputStream getResourceAsStream (String name);        这里name是资源的类路径,它是相对与"/"根路径下的位置.getResource得到的是一个URL对象来定位资源,而getResourceAsStream取得该资源输入流的引用保证程序可以从正确的位置抽取数据.     

java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径_java

java获取系统路径字体.得到某个目录下的所有文件名.获取当前路径 复制代码 代码如下: package com.liuxing.test; import java.awt.GraphicsEnvironment;import java.io.File;public class Test {  private static GraphicsEnvironment environment; /**  * @param args  */ public static void main(String[

java获取日期之间天数的方法_java

本文实例讲述了java获取日期之间天数的方法.分享给大家供大家参考.具体实现方法如下: private int daysBetween(Date now, Date returnDate) { Calendar cNow = Calendar.getInstance(); Calendar cReturnDate = Calendar.getInstance(); cNow.setTime(now); cReturnDate.setTime(returnDate); setTimeToMidni

java获取昨天日期字符串的方法_java

本文实例讲述了java获取昨天日期字符串的方法.分享给大家供大家参考,具体如下: import java.text.SimpleDateFormat; import java.util.Date; public class Test { /** * 获取昨天的日期字符串 * * @param nowDate * 当前日期的字符串 * @return */ public static String getLastDayInfo(String nowDate) { String yesterday

利用Java获取文件名、类名、方法名和行号的方法小结_java

大家都知道,在C语言中,我们可以通过宏FILE. __LINE__来获取文件名和行号,而在Java语言中,则可以通过StackTraceElement类来获取文件名.类名.方法名.行号,具体代码如下: public static int getLineNumber( ){ StackTraceElement[] stackTrace = new Throwable().getStackTrace(); return stackTrace[1].getLineNumber( ); } public

Java获取随机数的3种方法_java

主要介绍了Java获取随机数的3种方法,主要利用random()函数来实现 方法1 (数据类型)(最小值+Math.random()*(最大值-最小值+1))例: (int)(1+Math.random()*(10-1+1)) 从1到10的int型随数 方法2 获得随机数 for (int i=0;i<30;i++) {System.out.println((int)(1+Math.random()*10));} (int)(1+Math.random()*10) 通过java.Math包的ra

JAVA获取CLASSPATH路径

ClassLoader提供了两个方法用于从装载的类路径中取得资源:         public URL getResource(String name);         public InputStream getResourceAsStream(String name);         这里name是资源的类路径,它是相对与"/"根路径下的位置.getResource得到的是一个URL对象来定位资源,而getResourceAsStream取得该资源输入流的引用保证程序可以从正

Java 获取指定日期的实现方法总结

以下是对Java中获取指定日期的实现方法进行了归纳总结,需要的朋友可以参考下   复制代码 代码如下: 格式化日期 String-->Date  或者 Data-->String SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");   Date  date = sdf.parse("2009-11-04");//String-->Date   String  sdate  = sdf