//获取当前类文件所在包的根目录
System.out.println(System.getProperty("user.dir").replace("\\","/"));
//获取当前类文件所在的目录
System.out.println(TestUpload.class.getResource("").getPath().replaceAll("%20"," "));
说明:
1.前者得到的是所在包的根目录,注意后者得到的是类编译后的 .class 所在的目录。即路径中含有 /bin/......
2.前者得到的路径中,如果有空格,会正常显示,而后者得到的路径中,如果有空格,则显示为 %20,故应使用 .replaceAll("%20", " "); 否则,会报“找不到系统路径”的错误。
3.如果是想要获得已打成可运行jar包后,jar包所在的目录,应当使用前者。但是要注意前者得到的路径末尾不带"/",如果需要,手动加上,而后者末尾带有"/"
File file = new File(" ");
String path = file.getCanonicalPath();
示例:
package com.tuz;
import java.io.File;
public class CurrentDirectory {
public static void print(Object o) {
System.out.println(o);
}
public static void main(String[] args) throws Exception {
print(Thread.currentThread().getContextClassLoader().getResource(""));
print(CurrentDirectory.class.getClassLoader().getResource(""));
print(ClassLoader.getSystemResource(""));
print(CurrentDirectory.class.getResource(""));
print(CurrentDirectory.class.getResource("/"));
print(new File("").getAbsolutePath());
print(System.getProperty("user.dir"));
}
}
上面的例子中有的输出的是URL,可以继续转换为想要的路径名
通用方法:
URL url = PathTest.class.getClassLoader().getResource("1.txt");
String path = url.getPath();
File f = new File(path);
System.out.println(f.getAbsolutePath());