public boolean isFile(URI uri) {
    IURIInputStreamResolver resolver = inputResolvers.get(uri.getScheme());

    if (resolver == null) {
      return false;
    }
    return resolver.isFile(uri);
  }
  public String[] listEntries(URI uri) throws IOException {
    IURIInputStreamResolver resolver = inputResolvers.get(uri.getScheme());

    if (resolver == null) {
      throw new UnsupportedSchemeException(uri.getScheme());
    }
    return resolver.listEntries(uri);
  }
  public long lastModified(URI uri) throws IOException {
    IURIInputStreamResolver resolver = inputResolvers.get(uri.getScheme());

    if (resolver == null) {
      throw new UnsupportedSchemeException(uri.getScheme());
    }
    return resolver.lastModified(uri);
  }
  public Charset getCharset(URI uri) throws IOException {
    IURIInputStreamResolver resolver = inputResolvers.get(uri.getScheme());

    if (resolver == null) {
      throw new UnsupportedSchemeException(uri.getScheme());
    }

    return resolver.getCharset(uri);
  }
 public boolean supportsHost(URI uri) {
   IURIInputStreamResolver resolver = inputResolvers.get(uri.getScheme());
   if (resolver == null) {
     IURIOutputStreamResolver resolverOther = outputResolvers.get(uri.getScheme());
     if (resolverOther == null) {
       return false;
     }
     return resolverOther.supportsHost();
   }
   return resolver.supportsHost();
 }
 public void registerInput(IURIInputStreamResolver resolver) {
   inputResolvers.put(resolver.scheme(), resolver);
 }