code: @Override
    public Configuration loadConfig() throws ConfigurationException, IOException {
  
      Configuration resultConfig = new Configuration();
  
      if (!Utils.localFileExists(this.getConfigFileName())) {
        // String configFileName = System.getenv(ConfigConstant.DDF_INI_ENV_VAR.getValue());
        File file = new File(this.locateConfigFileName(this.getConfigDir(), this.getConfigFileName()));
        mConfigDir = file.getParentFile().getName();
        mConfigFileName = file.getCanonicalPath();
      }
  
      if (!Utils.localFileExists(this.getConfigFileName())) return null;
  
      HierarchicalINIConfiguration config = new HierarchicalINIConfiguration(this.getConfigFileName());
  
      @SuppressWarnings("unchecked")
      Set<String> sectionNames = config.getSections();
      for (String sectionName : sectionNames) {
        SubnodeConfiguration section = config.getSection(sectionName);
        if (section != null) {
          Configuration.Section resultSection = resultConfig.getSection(sectionName);
  
          @SuppressWarnings("unchecked")
          Iterator<String> keys = section.getKeys();
          while (keys.hasNext()) {
            String key = keys.next();
            String value = section.getString(key);
            if (value != null) {
              resultSection.set(key, value);
            }
          }
        }
      }
  
      mConfig = resultConfig;
      return mConfig;
    }
docs: Load configuration from ddf.ini, or the file name specified by the environment variable DDF_INI.
  
  @return the {@link Configuration} object loaded
  @throws Exception
  @throws ConfigurationException , {@link IOException}