Java基础 - 常用路径操作总结

1. 获取类路径

    返回类路径内容,一般为:lib1.jar;lib2.jar。

System.getProperty("java.class.path");
     在命令行运行Java程序时,上面的代码将会返回"-cp"参数内容,例如,执行下面的命令返回".;test.jar":
java -cp .;test.jar Test


2. Jar文件中路径操作

2.1 获取当前代码所在Jar包的绝对路径

File f = new File(Test.class.getProtectionDomain().getCodeSource().getLocation().getPath());
//Jar包绝对路径
System.out.println(f.getAbsolutePath());
//Jar包所在目录
System.out.println(f.getParent());

     需要注意的是,如果在java命令后添加如下参数启动安全管理器,并且安全策略文件中没有getProtectionDomain权限,则上述代码会抛出SecurityException 异常。

java -Djava.security.manager  -Djava.security.policy=="安全策略文件绝对路径"


2.2 读取当前代码所在Jar包中的资源文件

1)相对路径访问

    

public class Test {
	public static void main(String[] args) throws Exception {
		InputStream is1 = Test.class.getResourceAsStream("test.txt");
		InputStream is2 = Test.class.getResource("test.txt").openStream();
	}
}

    如果待读取资源文件在当前类的package下,则可以使用相对路径定位资源文件。上面的例子中,test.txt文件和Test类同处在test package下面,相对路径为test.txt。

2) 绝对路径访问

    Java基础 - 常用路径操作总结

public class Test {
	public static void main(String[] args) throws Exception {
		InputStream is1 = Test.class.getResourceAsStream("/resource/test.txt");
		InputStream is2 = Test.class.getResource("/resource/test.txt").openStream();
	}
}
      如果待读取资源文件和当前类不在同一个package下,则可以使用绝对路径定位资源文件。上面的例子中, test.txt资源文件处在resource package下面,绝对路径为/resource/test.txt。


2.3 读取当其它Jar包中的资源文件

InputStream is = new URL("jar:file:/C:/test.jar!/test/test.txt").openStream();





你可能感兴趣的:(Java基础 - 常用路径操作总结)