最近项目中需要使用获取操作系统路径问题,刚开始使用的是System.getProperty("user.dir")获取相对路径,但是这存在一个问题就是,我们使用shell脚本启动的时候,
如果启动的地方在其他地方,获取的路径地址就会在当前路径,而不是文件路径所在的位置。
如: 如果,启动的时候,直接在msgplus下面启动路径地址就在/home/msgplus下面,但是如果使用sh /home/msgplus/startup.sh启动,路径就在与home平级的目录。
于是到网上进查找资料,找了半天找到一些资料,终于可以完成本人所需要的功能,
现把此功能的核心部分写出来,
/**
* 获取路径
* @author liujunliang
* @creaetime Jul 2, 2011 9:55:25 AM
* @param cls 类位置
* @return String 返回值
* @throws IOException 异常
*/
public String getPathFromClass(Class cls) throws Exception {
String path = null;
if (cls == null) {
throw new NullPointerException();
}
URL url = getClassLocationURL(cls);
if (url != null) {
path = url.getPath();
path = java.net.URLDecoder.decode(url.getPath(), "utf-8");
File file = new File(path.replaceAll("%20", " "));
path = file.getCanonicalPath();
}
return path;
}
/**
* 获取类的class文件位置的URL。这个方法是本类最基础的方法,供其它方法调用。
* @author liujunliang
* @creaetime Jul 2, 2011 9:59:39 AM
* @param cls 类位置
* @return URL 返回值
*/
private URL getClassLocationURL(final Class cls) throws Exception{
if (cls == null) {
throw new IllegalArgumentException("class that input is null");
}
URL result = null;
final String clsAsResource = cls.getName().replace('.', '/')
.concat(".class");
final ProtectionDomain pd = cls.getProtectionDomain();
if (pd != null) {
final CodeSource cs = pd.getCodeSource();
if (cs != null) {
result = cs.getLocation();
}
}
if (result == null) {
final ClassLoader clsLoader = cls.getClassLoader();
result = clsLoader != null ? clsLoader.getResource(clsAsResource)
: ClassLoader.getSystemResource(clsAsResource);
}
return result;
}
分享到:
相关推荐
windows linux 下,获取java项目绝对路径的方法,struts2设置了struts.multipart.saveDir后会在根目录建立文件夹,这样会涉及linux下的权限问题
在 Java 项目中,获取绝对路径可以使用 `HttpServletRequest` 对象的 `getRealPath()` 方法。在 Web 项目中,可以使用 `request.getRealPath("")` 获取绝对路径。 ClassPath 路径 ClassPath 路径是 Java 项目中的...
- 使用`ServletContext`对象的`getRealPath("/")`方法,同样可以获得Web应用的根目录的绝对路径。 - 示例:`E:\eclipseM9\workspace\tree\treeweb` #### 二、获取本地路径 在Java程序中,获取本地路径主要是指...
getCanonicalPath() 函数将返回标准的路径,而 getAbsolutePath() 函数将返回绝对路径。 在使用 File 提供的函数时,需要注意 new File(".") 和 new File("..") 两种路径的区别。对于 getCanonicalPath() 函数,"....
在 Java 中,我们需要了解相对路径和绝对路径的概念,以及如何获取它们。下面我们将详细地讨论 Java 中的相对路径和绝对路径的问题。 1. 获取工程的绝对路径 在 Java 中,我们可以使用 `System.getProperty("user....
- 如果你需要获取某个文件所在目录的上级目录,可以先通过`application.getRealPath(request.getRequestURI())`得到该文件的绝对路径,再使用`new File(...).getParent()`获取其上级目录。 2. **Servlet中获取路径...
### Java相对路径与绝对路径详解 #### 一、基本概念理解 **绝对路径**:绝对路径是指文件或目录在硬盘上的真实路径,包括URL和物理路径。例如,“C:\xyz\test.txt”代表了test.txt文件的真实物理路径;而...
6. **阅读相关文档**:压缩包中的`Java类中获得相对路径和绝对路径.txt`和`Java普通类中如何获取工程真实路径?.txt`文档可能包含了更具体的实现细节,建议仔细阅读以获取更多信息。 理解这些知识点后,开发者就能...
#### (5) 获取页面的父目录绝对路径: 通过组合使用`application.getRealPath()`和`new File().getParent()`可以得到文件的父目录绝对路径,例如`D:\resin\webapps\TEST`。 ### 2. 类路径的获取 #### (1) 获取类...
而像`D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b`则是本地系统的绝对路径,同样是表示文件`aaa.b`的完整路径,但格式不同。 相对路径则相对抽象,它是相对于某个已知起点(基路径)的路径。在Java项目中,有...
### JAVA获取项目路径 在Java开发中,获取项目的路径是一个非常常见的需求,尤其是在处理文件读写、资源定位等场景时尤为重要。本文将详细介绍如何通过不同的方法来获取项目的各种路径,并结合示例代码进行说明。 ...
JSP中java脚本获取绝对路径 。
在Java Web开发中,理解和掌握相对路径与绝对路径的运用是至关重要的,因为这直接影响到资源定位、页面跳转以及文件读写等操作的正确性。以下是对Java Web中相对路径与绝对路径问题的深入总结: ### 一、路径概念与...
理解如何在Java中获取文件路径,特别是区分绝对路径和相对路径,对于构建稳定、可移植的应用程序至关重要。本文将深入探讨Java中获取文件路径的多种方法,以及这些方法背后的原理。 ### 一、Java中的路径类型 ####...
### Java中File的相对路径与绝对路径总结 在Java Web开发过程中,经常需要处理文件的读写操作,尤其是在运行时获取配置文件、动态加载对象等情况。对于这些需求,理解和掌握文件的相对路径与绝对路径至关重要。 ##...
Java 开发中,路径问题是非常重要的一方面,不同的路径表示方式会带来不同的结果,了解绝对路径和相对路径的概念和使用方法对Java 开发非常重要。本文总结了Java 开发中的路径问题,帮助开发朋友方便解决路径问题,...
总的来说,Java 提供了多种方式来获取文件或资源的绝对路径,取决于你所处理的具体情况。选择合适的方法取决于你是否需要访问类路径中的资源,或者只是简单地获取文件系统的文件路径。在进行文件操作时,确保正确...
使用`Paths.get`方法可以创建一个`Path`对象,然后通过`Path`类提供的方法获取文件的绝对路径、父目录、文件名等信息。 ### 5. 使用系统环境变量 有时候路径可能存储在系统环境变量中,比如`PATH`环境变量包含了...
- `Path`类提供了丰富的操作方法,如`isAbsolute()`检查路径是否为绝对路径,`resolve()`和`resolveSibling()`用于合并路径,`getParent()`获取父路径,`getNameCount()`获取路径段的数量,`getName(int index)`获取...