下面是对java如何获取执行文件的绝对路径的研究
方法一- //创建一个当前目录的File对象
-
File file = new file(".");
-
//获取当前目录的绝对路径
-
String curdir = file.getAbsolutePath();
该方法获得的只是用户当前所在的目录的绝对路径,并不能真的获得程序所在的路径
- E:\>java -jar e:\helloworld.jar
-
E:\\.
-
-
E:\>c:
-
-
C:\Documents and Settings\Administrator>java -jar e:\helloworld.jar
-
C:\Documents and Settings\Administrator\.
方法二- //通过System获得
-
System.getProperty("user.dir");
方法的结果一样,只是用户当前所在的目录
- C:\Documents and Settings\Administrator>java -jar e:\helloworld.jar
-
C:\Documents and Settings\Administrator
方法三- package starfrost;
-
-
public class HelloWorld {
-
-
/**
-
* @param args
-
*/
-
static String curdir;
-
-
HelloWorld() {
-
-
curdir = this.getClass().getResource("").getFile();
-
-
}
-
-
public static void main(String[] args) {
-
// TODO Auto-generated method stub
-
new HelloWorld();
-
System.out.println(curdir);
-
}
-
}
该方法获得的是正确的程序的目录所在位置,但是如果是jar文件的话并不是很直接,还需要进行一些修改
- C:\Documents and Settings\Administrator>java -jar e:\helloworld.jar
-
file:/E:/helloworld.jar!/starfrost/
但是获取class的文件位置就没有问题了
- E:\workspace\helloworld\bin>java starfrost.HelloWorld
-
/E:/workspace/helloworld/bin/starfrost/
通过这种方法可以获得和class文件同目录下的其他文件的File对象
方法四- package starfrost;
-
-
import java.net.URL;
-
-
public class HelloWorld {
-
-
/**
-
* @param args
-
*/
-
static URL curdir;
-
-
HelloWorld() {
-
-
curdir = this.getClass().getProtectionDomain().getCodeSource()
-
.getLocation();
-
-
}
-
-
public static void main(String[] args) {
-
// TODO Auto-generated method stub
-
new HelloWorld();
-
System.out.println(curdir);
-
}
-
}
该方法可以正确获得文件的位置
- E:\workspace\helloworld\bin>java -jar e:\helloworld.jar
-
file:/E:/helloworld.jar
还可以通过curdir.getFile()或者curdir.getPath()来获得jar文件的绝对路径(效果相同)
方法五- //通过java.class.path获得
-
curdir = System.getProperty("java.class.path");
感觉这个方法比较方便
- C:\Documents and Settings\Administrator>java -jar e:\helloworld.jar
-
e:\helloworld.jar
阅读(5117) | 评论(0) | 转发(0) |