2012-06-16 82 views
1

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

+4

http://stackoverflow.com/questions/320542/how-to-get-the-path-of-a-running-jar-file – 2012-06-16 17:43:47

回答

1

您不需要指定完整路径来创建新文件,java将默认在当前工作目录中创建新文件。

+0

不回答这个问题。 – EJP

+0

没有回答这个问题,但解决了这个问题,谢谢:) –

1

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

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

E.G.

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()); 
    } 
} 
1

Class.getProtectionDomain()。getCodeSource()的getLocation()将返回一个包含你称它的类,如果它在一个JAR的JAR的位置。

不过,另请参阅安德鲁汤普森的答案。

1

下面的代码片段会为你做到这一点:

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

main类取代MyClass

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

相关问题