基于Oracle documentation我试图构建一个URL并将其链接到我的硬盘上的路径。我使用以下代码:
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
为什么会这样?
答案 0 :(得分:1)
您的字符串中有额外的空格:URL url = new URL("file", null , path );
答案 1 :(得分:1)
不要使用URL
。并且don't use File
。这是2014年,我们有java.nio.file。
使用它,它会立即给出正确的结果:
final URL url = Paths.get(home, "dict").toUri().toURL();
与default filesystem相关联的方案总是 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环境变量。
答案 2 :(得分:0)
在设置html文件的路径时,可能会丢失协议。在尝试读取本地文件时,可以使用文件协议:
file:///{yourfilepath}
或强>
您可以使用
从Java中获取文件名到URInew File(filename).toURI()
希望这有帮助。