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