Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86128
  • 博文数量: 18
  • 博客积分: 360
  • 博客等级: 一等列兵
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-29 12:27
文章分类

全部博文(18)

文章存档

2014年(1)

2011年(17)

我的朋友

分类: Java

2011-04-12 09:34:53

下面是对java如何获取执行文件的绝对路径的研究

方法一
  1. //创建一个当前目录的File对象
  2. File file = new file(".");
  3. //获取当前目录的绝对路径
  4. String curdir = file.getAbsolutePath();
该方法获得的只是用户当前所在的目录的绝对路径,并不能真的获得程序所在的路径
  1. E:\>java -jar e:\helloworld.jar
  2. E:\\.

  3. E:\>c:

  4. C:\Documents and Settings\Administrator>java -jar e:\helloworld.jar
  5. C:\Documents and Settings\Administrator\.
方法二
  1. //通过System获得
  2. System.getProperty("user.dir");
方法的结果一样,只是用户当前所在的目录
  1. C:\Documents and Settings\Administrator>java -jar e:\helloworld.jar
  2. C:\Documents and Settings\Administrator
方法三
  1. package starfrost;

  2. public class HelloWorld {

  3.     /**
  4.      * @param args
  5.      */
  6.     static String curdir;

  7.     HelloWorld() {

  8.         curdir = this.getClass().getResource("").getFile();

  9.     }

  10.     public static void main(String[] args) {
  11.         // TODO Auto-generated method stub
  12.         new HelloWorld();
  13.         System.out.println(curdir);
  14.     }
  15. }

该方法获得的是正确的程序的目录所在位置,但是如果是jar文件的话并不是很直接,还需要进行一些修改
  1. C:\Documents and Settings\Administrator>java -jar e:\helloworld.jar
  2. file:/E:/helloworld.jar!/starfrost/
但是获取class的文件位置就没有问题了
  1. E:\workspace\helloworld\bin>java starfrost.HelloWorld
  2. /E:/workspace/helloworld/bin/starfrost/
通过这种方法可以获得和class文件同目录下的其他文件的File对象

方法四
  1. package starfrost;

  2. import java.net.URL;

  3. public class HelloWorld {

  4.     /**
  5.      * @param args
  6.      */
  7.     static URL curdir;

  8.     HelloWorld() {

  9.         curdir = this.getClass().getProtectionDomain().getCodeSource()
  10.                 .getLocation();

  11.     }

  12.     public static void main(String[] args) {
  13.         // TODO Auto-generated method stub
  14.         new HelloWorld();
  15.         System.out.println(curdir);
  16.     }
  17. }
该方法可以正确获得文件的位置
  1. E:\workspace\helloworld\bin>java -jar e:\helloworld.jar
  2. file:/E:/helloworld.jar
还可以通过curdir.getFile()或者curdir.getPath()来获得jar文件的绝对路径(效果相同)

方法五
  1. //通过java.class.path获得
  2. curdir = System.getProperty("java.class.path");
感觉这个方法比较方便
  1. C:\Documents and Settings\Administrator>java -jar e:\helloworld.jar
  2. e:\helloworld.jar

阅读(5063) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~