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

📄 urlstreamhandler.java

📁 俄罗斯高人Mamaich的Pocket gcc编译器(运行在PocketPC上)的全部源代码。
💻 JAVA
📖 第 1 页 / 共 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   *    * @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 || url1.getPort() != url2.getPort())      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   */  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.   *   * @exception UnknownHostException If an unknown host is found   */  protected boolean hostsEqual (URL url1, URL url2)    throws UnknownHostException  {    InetAddress addr1 = InetAddress.getByName (url1.getHost ());    InetAddress addr2 = InetAddress.getByName (url2.getHost ());    return addr1.equals (addr2);  }  /**   * Get the IP address of our host. An empty host field or a DNS failure will   * result in a null return.   */  protected InetAddress getHostAddress (URL url)  {    String hostname = url.getHost ();    if (hostname == "")      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.   */  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.   */  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   */  protected String toExternalForm(URL u)  {    String protocol, host, file, ref;    int port;    protocol = u.getProtocol();    // JDK 1.2 online doc infers that host could be null because it    // explicitly states that file cannot be null, but is silent on host.    host = u.getHost();    if (host == null)      host = "";    port = u.getPort();    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() + host.length() + file.length() + 24;    StringBuffer sb = new StringBuffer(size);    sb.append(protocol);    sb.append(':');    if (host.length() != 0)      sb.append("//").append(host);    // Note that this produces different results from JDK 1.2 as JDK 1.2    // ignores a non-default port if host is null or "".  That is inconsistent    // with the spec since the result of this method is spec'ed so it can be    // used to construct a new URL that is equivalent to the original.    boolean port_needed = port > 0 && port != getDefaultPort();    if (port_needed)      sb.append(':').append(port);    sb.append(file);    if (ref != null)      sb.append('#').append(ref);    return sb.toString();  }}

⌨️ 快捷键说明

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