【问题标题】:Check from Java if a file exists, from a path containing environment variables从 Java 中检查文件是否存在,从包含环境变量的路径
【发布时间】:2017-08-30 04:43:41
【问题描述】:

是否有现有的 Java 解决方案来解析包含环境变量的文件路径?

我需要转换这个(简化的)方法来处理提供的路径包含环境变量(如 %PROGRAMFILES(X86)%\SomeProgram\SomeFile.ini)的情况。

我知道如何编写代码来提取变量名、获取它们的值并将它们替换为提供的字符串,但我不禁觉得我在重新发明轮子......

boolean isValidPath(String pathToValidate) {
  File f = new File(pathToValidate);
  if(f.exists()) {
    return true;
  }  
  return false;
}

【问题讨论】:

    标签: java path environment-variables


    【解决方案1】:

    几乎可以肯定它不存在于标准库中,因为任何环境变量在其用法上都非常具体。一些允许列表由分号分隔,如 PATH,一些 - 只有一个值。同样依赖 env vars 的值意味着代码变得更加特定于平台,jre 似乎以任何合理的成本避免它。

    在 github 上已经有几个此类替换器的实现,例如 https://github.com/Haufe-Lexware/java-env-replacer

    【讨论】:

      【解决方案2】:

      您实际上可以通过调用System.getenv() 来获取环境变量的详细信息,然后您可以编写一些逻辑(示例如下)来实现您想要的:

      public boolean isValidPath(String pathToValidate) {
        String envValue = "";
        for (String envName : env.keySet()) {
            if(pathToValidate.contains(envName)) {
                   envValue= env.get(envName);
                   break;
            }
        }
        //replace the envValue in pathToValidate
        //Then check file exists or not & return true/false
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-26
        • 2016-10-03
        • 2013-10-22
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        相关资源
        最近更新 更多