code: public synchronized Properties getProperties(final File file) throws IOException {
  
          final Properties fileprops;
          if (needsReload(file)) {
              fileprops = new Properties();
              final InputStream is = new FileInputStream(file);
              try {
                  fileprops.load(is);
              } finally {
                  if (null != is) {
                      is.close();
                  }
              }
              mtimes.put(file, file.lastModified());
              props.put(file, fileprops);
              return fileprops;
          }
          return props.get(file);
      }
docs: Get the java Properties stored in the file, loading from disk only if the file has been modified
  since the last read, or the cached data has been invalidated.
  @param file java properties file
  @return java Properties
  @throws IOException due to file read or find error