【问题标题】:How to add path to file in Java args如何在 Java args 中添加文件路径
【发布时间】:2018-03-05 09:55:21
【问题描述】:

我正在做一个项目,但我遇到了问题。 我需要在 cmnd 提示符下运行 .jar,并且需要将 .properties 文件的路径放入参数中,例如:

java -jar myproject.jar C:\path\to\config.properties

现在我有一个文件 satatic 的路径

FileInputStream in = new FileInputStream("config\\crdb.properties");

我需要以某种方式放置变量而不是静态路径并使用参数进行更改。

谢谢。

【问题讨论】:

  • 这就是你的 main 函数中的 args[] 的作用

标签: java command-line jar args


【解决方案1】:

使用 -D 放置您的 系统变量 并使用 System.getProperty 获取它:

  java -Dpath.properties=C:\path\to\config.properties -jar myproject.jar 

String pathProp= System.getProperty("path.properties");
FileInputStream in = new FileInputStream(pathProp);

【讨论】:

    【解决方案2】:

    只需使用args数组:

    public static void main(String args[]) {
       try (FileInputStream in = new FileInputStream(args[0])) {
         // do stuff..
       }
    }
    

    【讨论】:

      【解决方案3】:

      如果您正在从 main 方法读取属性文件,您可以通过 args[] 数组 public static void main(String args[]) 简单的代码访问命令行参数,如下所示

      public static void main(String[] args) {
          String splitChar="=";
      
          try {
      
              Map<String, String> propertyList = Files.readAllLines(Paths.get(args[0]))
                      .stream()
                      .map(String.class::cast)
                      .collect(Collectors.toMap(line -> line.split(splitChar)[0],
                              line -> line.split(splitChar)[1]));
              System.out.println(propertyList);
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
      

      否则您可以将路径传递为vm option

      java -Dfile.path={配置文件路径} {JavaClassFile 执行}

      你可以得到如下的路径(从你代码中的任何地方)

      System.getProperty("file.path")
      

      和上面的 main 方法一样,你可以读取属性文件并将其放入我更喜欢的HashMap

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-28
        • 1970-01-01
        • 2016-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多