⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 urlstreamhandler.java

📁 kaffe Java 解释器语言,源码,Java的子集系统,开放源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    // Replace "/./" with "/".  This probably isn't very efficient in    // the general case, but it's probably not bad most of the time.    while ((index = file.indexOf("/./")) >= 0)      file = file.substring(0, index) + file.substring(index + 2);    // Process "/../" correctly.  This probably isn't very efficient in    // the general case, but it's probably not bad most of the time.    while ((index = file.indexOf("/../")) >= 0)      {	// Strip of the previous directory - if it exists.	int previous = file.lastIndexOf('/', index - 1);	if (previous >= 0)	  file = file.substring(0, previous) + file.substring(index + 3);	else	  break;      }    return file;   }  /**   * Compares two URLs, excluding the fragment component   *   * @param url1 The first url   * @param url2 The second url to compare with the first   *    * @return True if both URLs point to the same file, false otherwise.   *   * @specnote Now protected   */  protected boolean sameFile(URL url1, URL url2)  {    if (url1 == url2)      return true;    // This comparison is very conservative.  It assumes that any    // field can be null.    if (url1 == null || url2 == null)      return false;    int p1 = url1.getPort ();    if (p1 == -1)      p1 = url1.ph.getDefaultPort ();    int p2 = url2.getPort ();    if (p2 == -1)      p2 = url2.ph.getDefaultPort ();    if (p1 != p2)      return false;    String s1, s2;    s1 = url1.getProtocol();    s2 = url2.getProtocol();    if (s1 != s2 && (s1 == null || ! s1.equals(s2)))      return false;    s1 = url1.getHost();    s2 = url2.getHost();    if (s1 != s2 && (s1 == null || ! s1.equals(s2)))      return false;    s1 = canonicalizeFilename(url1.getFile());    s2 = canonicalizeFilename(url2.getFile());    if (s1 != s2 && (s1 == null || ! s1.equals(s2)))      return false;    return true;  }  /**   * This methods sets the instance variables representing the various fields   * of the URL to the values passed in.   *   * @param u The URL to modify   * @param protocol The protocol to set   * @param host The host name to et   * @param port The port number to set   * @param file The filename to set   * @param ref The reference   *   * @exception SecurityException If the protocol handler of the URL is   * different from this one   *   * @deprecated 1.2 Please use   * #setURL(URL,String,String,int,String,String,String,String);   */  protected void setURL(URL u, String protocol, String host, int port,			String file, String ref)  {    u.set(protocol, host, port, file, ref);  }  /**   * Sets the fields of the URL argument to the indicated values   *   * @param u The URL to modify   * @param protocol The protocol to set   * @param host The host name to set   * @param port The port number to set   * @param authority The authority to set   * @param userInfo The user information to set   * @param path The path/filename to set   * @param query The query part to set   * @param ref The reference   *   * @exception SecurityException If the protocol handler of the URL is   * different from this one   */  protected void setURL(URL u, String protocol, String host, int port,			String authority, String userInfo, String path,			String query, String ref)  {    u.set(protocol, host, port, authority, userInfo, path, query, ref);  }  /**   * Provides the default equals calculation. May be overidden by handlers for   * other protocols that have different requirements for equals(). This method   * requires that none of its arguments is null. This is guaranteed by the   * fact that it is only called by java.net.URL class.   *   * @param url1 An URL object   * @param url2 An URL object   *   * @return True if both given URLs are equal, false otherwise.   */  protected boolean equals (URL url1, URL url2)  {    // This comparison is very conservative.  It assumes that any    // field can be null.    return (url1.getPort () == url2.getPort ()	    && ((url1.getProtocol () == null && url2.getProtocol () == null)		|| (url1.getProtocol () != null			&& url1.getProtocol ().equals (url2.getProtocol ())))	    && ((url1.getUserInfo () == null && url2.getUserInfo () == null)                || (url1.getUserInfo () != null			&& url1.getUserInfo ().equals(url2.getUserInfo ())))	    && ((url1.getAuthority () == null && url2.getAuthority () == null)                || (url1.getAuthority () != null			&& url1.getAuthority ().equals(url2.getAuthority ())))	    && ((url1.getHost () == null && url2.getHost () == null)		|| (url1.getHost () != null			&& url1.getHost ().equals(url2.getHost ())))	    && ((url1.getPath () == null && url2.getPath () == null)		|| (url1.getPath () != null			&& url1.getPath ().equals (url2.getPath ())))	    && ((url1.getQuery () == null && url2.getQuery () == null)                || (url1.getQuery () != null			&& url1.getQuery ().equals(url2.getQuery ())))	    && ((url1.getRef () == null && url2.getRef () == null)		|| (url1.getRef () != null			&& url1.getRef ().equals(url2.getRef ()))));  }  /**   * Compares the host components of two URLs.   *   * @param url1 The first URL.   * @param url2 The second URL.   *   * @return True if both URLs contain the same host.   *   * @exception UnknownHostException If an unknown host is found   */  protected boolean hostsEqual (URL url1, URL url2)  {    InetAddress addr1 = getHostAddress (url1);    InetAddress addr2 = getHostAddress (url2);    if (addr1 != null || addr2 != null)      return addr1.equals (addr2);    String host1 = url1.getHost();    String host2 = url2.getHost();        if (host1 != null && host2 != null)      return host1.equalsIgnoreCase (host2);    return host1 == null && host2 == null;  }  /**   * Get the IP address of our host. An empty host field or a DNS failure will   * result in a null return.   *   * @param url The URL to return the host address for.   *   * @return The address of the hostname in url.   */  protected InetAddress getHostAddress (URL url)  {    String hostname = url.getHost ();    if (hostname.equals(""))      return null;        try      {        return InetAddress.getByName (hostname);      }    catch (UnknownHostException e)      {	return null;      }  }  /**   * Returns the default port for a URL parsed by this handler. This method is   * meant to be overidden by handlers with default port numbers.   *   * @return The default port number.   */  protected int getDefaultPort ()  {    return -1;  }  /**   * Provides the default hash calculation. May be overidden by handlers for   * other protocols that have different requirements for hashCode calculation.   *   * @param url The URL to calc the hashcode for.   *    * @return The hashcode for the given URL.   */  protected int hashCode (URL url)  {    return url.getProtocol ().hashCode () +           ((url.getHost () == null) ? 0 : url.getHost ().hashCode ()) +	   url.getFile ().hashCode() +	   url.getPort ();  }  /**   * This method converts a URL object into a String.  This method creates   * Strings in the mold of http URL's, so protocol handlers which use URL's   * that have a different syntax should override this method   *   * @param url The URL object to convert   *   * @return A string representation of the url   */  protected String toExternalForm(URL u)  {    String protocol, authority, file, ref;    int port;    protocol = u.getProtocol();    authority = u.getAuthority();    if (authority == null)      authority = "";    file = u.getFile();    ref = u.getRef();    // Guess a reasonable size for the string buffer so we have to resize    // at most once.    int size = protocol.length() + authority.length() + file.length() + 24;    StringBuffer sb = new StringBuffer(size);    if (protocol != null && protocol.length() > 0)      {	sb.append(protocol);	sb.append(":");      }    if (authority.length() != 0)      {	sb.append("//").append(authority);      }    sb.append(file);    if (ref != null)      sb.append('#').append(ref);    return sb.toString();  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -