从包含环境变量的路径中检查Java是否存在文件

时间:2017-04-04 19:50:47

标签: java path environment-variables

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

在github上已经有几个这样的替代者实现,例如https://github.com/Haufe-Lexware/java-env-replacer

答案 1 :(得分:0)

您实际上可以通过调用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
}