根据Oracle文档,我尝试构造一个URL并将其链接到HDD上的路径。我使用以下代码来执行此操作:
String path = home+ File . separator + " dict ";
URL url = new URL(" file ", null , path );
但是,虽然在 Oracle 文档中说file
可以首先成为协议之一,但它在实际中给了我以下例外:
Exception in thread "main" java.net.MalformedURLException: unknown protocol: file
为什么会这样?
字符串中有额外的空间:URL url = new URL("file", null , path );
设置 html 文件的路径时,您可能缺少协议。当您尝试读取本地文件时,可以使用文件协议:
file:///{yourfilepath}
或
您可以使用以下方法从 Java 中的文件名获取到 URI:
new File(filename).toURI()
希望这有帮助。
不要为此使用 URL
。并且不要使用File
.这是2014年,我们有java.nio.file。
改用这个,它将给出一个即时、正确的结果:
final URL url = Paths.get(home, "dict").toUri().toURL();
与默认文件系统关联的方案始终file
。
另外,为什么是 URL 而不是 URI?请注意,您的代码在 Windows 上不起作用(URI 的路径组件中不能有反斜杠(。
编辑:你使用的手册似乎也弄错了很多东西;首先,它假设一个Unix系统!
您遇到的一个问题是系统上没有设置WNHOME
环境变量;因此,您将获得一个路径,该路径是当前目录加上null
,加上"dict"
。
将您的代码更改为以下内容:
final String wnhome = System.getenv("WNHOME");
if (wnhome == null)
throw new IllegalStateException("WNHOME environment variable is not set");
final URL url = Paths.get(wnhome, dict).toUri().toURL();
通常你会看到一个异常...由您在此处设置 WNHOME 环境变量。