code: public void initialize(URI name, Configuration conf) throws IOException {
      //decode the name
      underLyingURI = decodeHarURI(name, conf);
      //  we got the right har Path- now check if this is
      //truly a har filesystem
      Path harPath = archivePath(
        new Path(name.getScheme(), name.getAuthority(), name.getPath()));
      if (harPath == null) {
        throw new IOException("Invalid path for the Har Filesystem. " +
                             name.toString());
      }
      if (fs == null) {
        fs = FileSystem.get(underLyingURI, conf);
      }
      this.uri = harPath.toUri();
      this.archivePath = new Path(this.uri.getPath());
      this.harAuth = getHarAuth(this.underLyingURI);
      //check for the underlying fs containing
      // the index file
      this.masterIndex = new Path(archivePath, HarFileSystem.MASTER_INDEX_NAME);
      this.archiveIndex = new Path(archivePath, HarFileSystem.INDEX_NAME);
      if (!fs.exists(masterIndex) || !fs.exists(archiveIndex)) {
        throw new IOException("Invalid path for the Har Filesystem. " +
            "No index file in " + harPath);
      }
      try{
        this.version = getHarVersion();
      } catch(IOException io) {
        throw new IOException("Unable to " +
            "read the version of the Har file system: " + this.archivePath);
      }
      // make it always backwards-compatible
      if (this.version > HarFileSystem.VERSION) {
        throw new IOException("Invalid version " +
            this.version + " expected " + HarFileSystem.VERSION);
      }
    }
docs: Initialize a Har filesystem per har archive. The
  archive home directory is the top level directory
  in the filesystem that contains the HAR archive.
  Be careful with this method, you do not want to go
  on creating new Filesystem instances per call to
  path.getFileSystem().
  the uri of Har is
  har://underlyingfsscheme-host:port/archivepath.
  or
  har:///archivepath. This assumes the underlying filesystem
  to be used in case not specified.