如何知道java中jar文件的目录?

我有一个可执行jar文件,我希望它能够读取和写入与.jar文件位于同一目录的txt文件的信息。 我怎样才能做到这一点? 如何获取可执行jar文件目录路径。 它只需要在Windows平台上运行,它就是桌面应用程序。

您无需指定完整路径即可创建新文件,默认情况下,java将在当前工作目录中创建新文件。

我有一个可执行jar文件,我希望它能够读取和写入与.jar文件位于同一目录的txt文件的信息。

不要那样做! 大多数操作系统制造商一直在说不要将应用程序和应用程序数据放在同一个地方。 应用程序数据的最佳位置是user.home的子目录。

例如

 import java.io.File; public class QuickTest { public static void main(String[] args) { String[] pkgPath = { "com", "our", "app" }; File f = new File(System.getProperty("user.home")); File subDir = f; for (String pkg : pkgPath) { subDir = new File(subDir,pkg); } System.out.println(f.getAbsoluteFile()); System.out.println(subDir.getAbsoluteFile()); } } 

Class.getProtectionDomain()。getCodeSource()。getLocation()将返回包含您调用它的类的JAR的位置(如果它在JAR中)。

然而,请参阅Andrew Thompson的回答。

以下代码段将为您执行此操作:

 final File f = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath()); 

用您的main类替换MyClass

生成的File对象f表示已执行的.jar文件。 您可以使用此对象获取文件所在的目录,并使用该目录构建目录路径。