我有一个mavenproject(java)。
现在该项目中有一个文件。一个文件,不是类File的对象。 (实际上是txt)最后,这个文件将被捆绑在jar中。我想在项目执行期间使用它,我确实需要该文件的绝对路径。 当然,这取决于我使用的计算机。 如果我们讨论的是File对象,我只需使用myfile.getAbsolutePath找到绝对路径。
在这种情况下是否还有办法找到路径?
答案 0 :(得分:3)
此文件将捆绑在jar中。
文件不再是文件系统上的独立文件。它没有唯一的文件系统路径,只能指向它。
包装后的打包文件(类似于zip)的一部分。这是提供class.getResourceAsStream()和classLoader.getResourceAsStream()等方法的主要原因。
答案 1 :(得分:2)
反思来救援。你可以这样做:
java.net.URL url = <your class name>.class.getProtectionDomain().getCodeSource().getLocation();
java.io.File file = new java.io.File(url.toURI());
file.toString()
将为您提供绝对路径。但是请谨慎使用,因为使用getProtectionDomain()
时存在安全隐患:检查它是否适用于所有平台。