📄 handler.java
字号:
package exploringjava.protocolhandlers.crypt;import java.io.*;import java.net.*;public class Handler extends URLStreamHandler { protected void parseURL(URL url, String spec, int start, int limit) { int slash = spec.indexOf('/'); String crypType = spec.substring(start, slash-1); super.parseURL(url, spec, slash, limit); setURL( url, "crypt:"+crypType, url.getHost(), url.getPort(), url.getFile(), url.getRef() ); } protected URLConnection openConnection(URL url) throws IOException { String crypType = url.getProtocol().substring(6); return new CryptURLConnection( url, crypType ); }}class CryptURLConnection extends URLConnection { static int defaultPort = 80; CryptInputStream cis; public String getContentType() { return guessContentTypeFromName( url.getFile() ); } CryptURLConnection ( URL url, String crypType ) throws IOException { super( url ); try { String classname = "exploringjava.protocolhandlers.crypt." + crypType + "CryptInputStream"; cis = (CryptInputStream)Class.forName(classname).newInstance(); } catch ( Exception e ) { throw new IOException("Crypt Class Not Found: "+e); } } public void connect() throws IOException { int port = ( url.getPort() == -1 ) ? defaultPort : url.getPort(); Socket s = new Socket( url.getHost(), port ); // Send the filename in plaintext OutputStream server = s.getOutputStream(); new PrintWriter( new OutputStreamWriter( server, "8859_1" ), true ).println( "GET " + url.getFile() ); // Initialize the CryptInputStream cis.set( s.getInputStream(), server ); connected = true; } public InputStream getInputStream() throws IOException { if (!connected) connect(); return ( cis ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -