在java中获取文件路径

时间:2010-05-26 15:28:23

标签: java file

java程序有没有办法确定它在文件系统中的位置?

3 个答案:

答案 0 :(得分:12)

您可以使用CodeSource#getLocation()CodeSource可以ProtectionDomain#getCodeSource()使用ProtectionDomainClass#getProtectionDomain()依次由ClassLoader#getResource()提供。

URL location = getClass().getProtectionDomain().getCodeSource().getLocation();
File file = new File(location.getPath());
// ...

这会返回相关Class的确切位置。

更新:根据评论,它显然已经在类路径中了。然后,您可以使用ClassLoader#getResourceAsStream()来传递根包相对路径。

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL resource = classLoader.getResource("filename.ext");
File file = new File(resource.getPath());
// ...

您甚至可以使用{{3}}将其作为InputStream获取。

InputStream input = classLoader.getResourceAsStream("filename.ext");
// ...

这也是使用打包资源的常规方式。如果它位于包内,则使用例如com/example/filename.ext

答案 1 :(得分:0)

对我而言,当我知道文件的确切名称时,这是有效的:

File f = new File("OutFile.txt"); System.out.println("f.getAbsolutePath() = " + f.getAbsolutePath());

或者也有这个解决方案:http://docs.oracle.com/javase/tutorial/essential/io/find.html

答案 2 :(得分:-1)

如果你想获得当前正在运行的程序的“工作目录”,那么只需使用:

new File("");