从包含环境变量的路径中检查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
}