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

问题描述:

是否存在解决包含环境变量的文件路径的现有Java解决方案?从包含环境变量的路径中检查Java是否存在文件

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

我知道如何编写代码来提取变量名,取他们的价值和所提供的字符串替换他们,但我不禁觉得我重新发明*...

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

几乎可以肯定它在标准库中是不存在的,因为任何环境变量在使用上都非常具体。有些允许用分号分隔的列表如PATH,有些只有一个单一的值。也依赖env变量的值意味着代码变得更具有平台特定性,并且jr似乎以合理的成本避免它。

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

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