在Java8中打印所有支持的URL方案

时间:2017-01-21 21:10:47

标签: java url

有没有办法在Java8中打印所有支持的URL方案?我知道Java8支持httphttpsfile等,但支持哪些内容并且URL.openStream()方法会正确处理?

1 个答案:

答案 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