从Java代码的执行位置获取位置

时间:2010-04-21 10:48:13

标签: java file jar persistence

我有一个可以保存大量数据的swing Java应用程序(例如,您可以考虑游戏及其存储)。这些数据存储在文件中而不是数据库中。

我想将这些文件保存在我的应用程序的安装文件(.jar文件)附近。一些用户(比如我)用来删除操作系统的默认应用程序文件夹,当它变大时我不希望它们松动他们的数据就是这样。

任何想法如何轻松地做到这一点?如何从正在执行.jar文件的程序中获取.jar文件的文件夹?或者如何将文件直接输出到某个包中?如何动态创建包(jar中的文件夹)?或者有一种简单的方法以其他格式分发Java应用程序然后.jar然后将生成的数据存储在安装(子)文件夹中?

感谢您阅读

4 个答案:

答案 0 :(得分:6)

  

我想保留这些文件   我的安装文件(.jar文件)   application.Some用户(比如我)是   用于删除默认应用程序   操作系统的文件夹,当涉及到大   我不希望他们放松他们的   这样的数据。

这(以及对普通用户帐户没有对应用程序目录的写访问权限的多用户系统的概念)是用户数据应保存在用户主目录中的原因,而不是应用程序安装文件夹附近的任何位置。< / p>

答案 1 :(得分:5)

代码

URL folderURL = ClassLoader.getSystemResource(".");

将为搜索资源的第一个位置提供一个URL,例如您当前正在执行的类文件。

答案 2 :(得分:2)

以下是一个例子:

package jartest;

import java.io.File;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    private static final Pattern JARURL = Pattern.compile("jar:file:(.*)!.*");

    public static void main(String[] args) {
        try {
            URL url = Main.class.getResource("Main.class");
            Matcher matcher = JARURL.matcher(url.toString());
            if (matcher.matches()) {
                File file = new File(matcher.group(1));
                File dir = file.getParentFile();
                System.out.println(dir);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

答案 3 :(得分:0)

获取jar文件的位置

首先创建一个文件夹(比如myfolder)并将文件放入其中

考虑以下功能

public String path()
{
URL url1 = getClass().getResource("");
String ur=url1.toString();
ur=ur.substring(9);
String truepath[]=ur.split("myjar.jar!");
truepath[0]=truepath[0]+"myfolder/";
truepath[0]=truepath[0].replaceAll("%20"," ");
return truepath[0];
}//This method will work on Windows and Linux as well.
//You can alternatively use the following line to get the path of your jar file
//classname.class.getProtectionDomain().getCodeSource().getLocation().getPath();

假设您的用户将jar文件放在D:\ Test \ dist

然后path()将返回/ D:/ Test / dist / myfolder /

现在您可以将'myfolder'放在jar文件所在的文件夹中

这样您就可以访问myfolder中的文件

分发步骤

http://www.jrsoftware.org/isdl.php下载Inno Setup Compiler并运行它

选择“使用脚本向导创建新脚本文件”选项 填写您的申请详情

接下来浏览您的jar文件(选择打开对话框的所有文件选项以查看您的jar文件)

并且cource将你的'myfolder'添加到其他应用程序文件部分(添加文件夹)

按照其余说明进行操作

你是一个人。