【问题标题】:can I get the directory of another file?我可以得到另一个文件的目录吗?
【发布时间】:2019-08-03 10:05:28
【问题描述】:

我为我的 java 程序创建了一个自动更新程序。但在下载结束时,它会将文件下载到桌面。我可以得到程序文件在哪里并更新它?

这是我的代码:

    @Override
    public void run() {
        if(!Debug) {
            try {
                FileUtils.copyURLToFile(new URL("fileurl"), new File(System.getenv("APPDATA") + "\\file.zip"));
                UnzipUtility unzip = new UnzipUtility();
                File deskfile = new File(System.getProperty("user.home") + "/Desktop/file.jar");
                if(deskfile.exists()) {
                    deskfile.delete();
                }

                unzip.unzip(System.getenv("APPDATA") + "\\file.zip", System.getProperty("user.home") + "/Desktop");
                File file = new File(System.getenv("APPDATA") + "\\file.zip");
                file.delete();
                Successfull = true;
            } catch (IOException e) {
                Successfull = false;
            }
            try {
                Updater.sleep(0L);
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
    }

这是我的外部更新程序 jar 中的代码,我需要找到主程序目录我该怎么办?

例如,如果主程序位于桌面以外的任何其他目录中,则更新将始终将其下载到桌面...我需要它来更改执行命令以启动更新程序的文件

【问题讨论】:

  • "我可以..." - 由于 Java 是图灵完备的,因此答案是“很可能是的”。
  • 某些程序(Java、Gradle 等)需要为其主目录设置环境变量。这会是一个解决方案吗?

标签: java apache fileutils


【解决方案1】:

如果您的外部更新程序与您的邮件应用程序位于同一目录中,您可以使用:

System.getProperty("user.dir");

这将为您提供当前文件夹。您可以在此处找到更多详细信息:https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

如果不是这种情况,我会看到以下选项:

  • 在更新安装文件夹之前询问用户
  • 将安装文件夹存储在OS用户数据属性文件中 //更新jar文件夹。

问候,维普

【讨论】:

    猜你喜欢
    • 2012-07-26
    • 2019-11-13
    • 2020-03-27
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 2012-03-24
    相关资源
    最近更新 更多