有没有办法在Java8中打印所有支持的URL方案?我知道Java8支持http
,https
,file
等,但支持哪些内容并且URL.openStream()
方法会正确处理?
答案 0 :(得分:4)
java.net.URL
状态的javadoc:
以下协议的协议处理程序保证存在于搜索路径中:http,https,file和jar
也可以使用其他协议的协议处理程序。
如果您需要的不仅仅是 http,https,文件和jar ,您需要通过编写和加载协议处理程序来自行配置它们。
如果应用程序先前已将URLStreamHandlerFactory
的实例设置为流处理程序工厂,则调用该实例的createURLStreamHandler
方法,并使用协议字符串作为参数来创建流协议处理程序。
如果尚未设置URLStreamHandlerFactory
,或者工厂的createURLStreamHandler
方法返回null,则构造函数会找到系统属性的值:java.protocol.handler.pkgs
如果该系统属性的值不为null,则将其解释为由垂直斜杠字符“|”分隔的包列表。构造函数尝试加载名为<package>.<protocol>.Handler
....其中<package>
被包名称替换,<protocol>
被协议名称替换。如果此类不存在,或者该类存在但它不是URLStreamHandler
的子类,则尝试列表中的下一个包。
<system default package>.<protocol>.Handler