📄 rawfingerurlstreamhandler.java
字号:
/* * Java Network Programming, Second Edition * Merlin Hughes, Michael Shoffner, Derek Hamner * Manning Publications Company; ISBN 188477749X * * http://nitric.com/jnp/ * * Copyright (c) 1997-1999 Merlin Hughes, Michael Shoffner, Derek Hamner; * all rights reserved; see license.txt for details. */import java.io.*;
import java.net.*;
import java.util.*;
public class RawFingerURLStreamHandler extends URLStreamHandler {
protected void parseURL (URL url, String spec, int start, int limit) {
String query = spec.substring (start, limit);
int at = query.lastIndexOf ("@");
String user = (at > -1) ? query.substring (0, at) : query;
StringBuffer revUser = new StringBuffer ();
StringTokenizer t = new StringTokenizer (user, "@", true);
while (t.hasMoreTokens ())
revUser.insert (0, t.nextToken ().replace ('@', '/'));
revUser.insert (0, '/');
String location = (at > -1) ? query.substring (at + 1) : "";
int colon = location.indexOf (":");
int port = ((colon > -1) && (colon < location.length () - 1)) ?
Integer.parseInt (location.substring (colon + 1)) : -1;
String host = (colon > -1) ? location.substring (0, colon) : location;
setURL (url, url.getProtocol (), host, port,
revUser.toString (), url.getRef ());
}
protected String toExternalForm (URL url) {
StringBuffer result = new StringBuffer ();
String file = url.getFile ().substring (1);
StringTokenizer files = new StringTokenizer (file, "/", true);
while (files.hasMoreTokens ())
result.insert (0, files.nextToken ().replace ('/', '@'));
result.insert (0, ':').insert (0, url.getProtocol ());
if ((url.getHost ().length () > 0) || (url.getPort () != -1))
result.append ('@');
result.append (url.getHost ());
if (url.getPort () != -1)
result.append (':').append (url.getPort ());
if (url.getRef () != null)
result.append ('#').append (url.getRef ());
return result.toString ();
}
protected URLConnection openConnection (URL url) throws IOException {
return new FingerURLConnection (url);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -