1. [MainClass].class.getResource("").getPath();
2. [MainClass].class.getClassLoader().getResource("").getPath();
3. [MainClass].class.getProtectionDomain().getCodeSource().getLocation().getPath();
第一种:
未打成jar包,可正常运行。
打成jar包之后,运行不能生效。
第二种:
未打成jar包,可正常运行。
打成jar包之后,运行不能生效。
第三种:
路径如果包含中文,就会变成带 "%xx%xx" 格式的字符串。
所以需要写成如下:
URLDecoder.decode([MainClass].class.getProtectionDomain().getCodeSource().getLocation().getFile(), "UTF-8");
这种获取路径的方式,无论打包(jar)还是未打包,都是有效的。
package com.what21.io12;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
public class FilePath {
/**
* @param args
* @throws UnsupportedEncodingException
*/
public static void main(String[] args) throws Exception {
System.out.println(System.getProperty("java.class.path"));
//===================================//
String path1 = FilePath.class.getResource("").getPath();
System.out.println("path : " + path1);
String path2 = FilePath.class.getClassLoader().getResource("").getPath();
System.out.println("path : " + path2);
String path3 = FilePath.class.getProtectionDomain().getCodeSource().getLocation().getPath();
System.out.println("path : " + path3);
System.out.println("path : " + URLDecoder.decode(path3,"UTF-8"));
}
}