今天在写spring包扫描实现的时候,要扫描包下的所有class文件。然后我要根据classpath创建一个绝对路径的File对象,所以想到了File的new File(new URI("file:///path"))构造。中间遇到了一些坑,特意去了解了一下 file:///这个协议。

本地文件协议

file: 和 http相同,是一个协议,通常用于访问计算机中的本地文件。我们可以通过向浏览器或者文件管理器输入协议,来查看磁盘中的文件:

upload successful

因为file协议本身是一种协议,所以,它也遵循uri规则:

1
scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]

因为host部分不存在,所以,file协议的uri可以写为:

1
2
3
file:/path  #准确,此标准称作CURIE, 如果‘/’去除,代表相对路径
或者
file:///path