java - 通过java在jar文件所在的地方创建一个目录

标签 java path directory

我已经调查过 SO 的答案,但找不到合适的答案。

当我从 jar 启动我的程序时,我需要在 jar 文件所在的目录中创建一个文件夹。用户将 jar 文件保存在何处无关紧要。

这是我正在玩的最新代码: System.out.println 将打印出正确的目录,但不会创建文件夹。相比之下,截至目前,所有内容都保存到我的 System32 文件夹中。

    public static String getProgramPath() throws IOException{
    String currentdir = System.getProperty("user.dir");
    currentdir = currentdir.replace( "\\", "/" );
    return currentdir;

}

File dir = new File(getProgramPath() + "Comics/");//The name of the directory to create
    dir.mkdir();//Creates the directory

最佳答案

获取 Jar 的路径可能比简单地获取 user.dir 目录更棘手。我不记得具体原因,但 user.dir 并非在所有情况下都可靠地返回此路径。如果您绝对必须获取 jar 的路径,那么您需要使用一些黑魔法并首先获取该类的 protectionDomain。像这样的东西:

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder;

import javax.swing.JOptionPane;

public class MkDirForMe {
   public static void main(String[] args) {
      try {
         String path = getProgramPath2();

         String fileSeparator = System.getProperty("file.separator");
         String newDir = path + fileSeparator + "newDir2" + fileSeparator;
         JOptionPane.showMessageDialog(null, newDir);

         File file = new File(newDir);
         file.mkdir();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }

   public static String getProgramPath2() throws UnsupportedEncodingException {
      URL url = MkDirForMe.class.getProtectionDomain().getCodeSource().getLocation();
      String jarPath = URLDecoder.decode(url.getFile(), "UTF-8");
      String parentPath = new File(jarPath).getParentFile().getPath();
      return parentPath;
   }
}

即使这样也不能保证有效,您将不得不接受这样一个事实,即有时(例如出于安全原因)您将无法获得 Jar 的路径。

关于java - 通过java在jar文件所在的地方创建一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11166644/

相关文章:

Python 找不到设置了 PYTHONPATH 的模块

java - 在 Windows 上配置 JNotify

java - 如何以与文件夹中存在的顺序相同的顺序获取文件?

java - 在Java中,如何根据文件的最后修改日期将 vector 中的文件排序为3个不同的 vector ?

java - 将缓冲图像移动到特定坐标

java - 为什么我的@singleton 不起作用?

python - 按艺术家组织歌曲| python ,眼睛3

java - 原点、宽度、高度

android - 如何在activity类中使用自定义类(扩展View类)来绘制路径而不改变android中主布局的其他部分

node.js - 如何向 jEdit 突击队提供 PATH?