下面的代码抛出了下面的异常:
URL u = new URL("file://D:/abc.xml");
InputStream input = u.openStream();
异常抛出:
Exception in thread "main" java.net.UnknownHostException: D
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
at sun.net.NetworkClient.openServer(NetworkClient.java:118)
at sun.net.ftp.FtpClient.openServer(FtpClient.java:488)
at sun.net.ftp.FtpClient.openServer(FtpClient.java:475)
at sun.net.www.protocol.ftp.FtpURLConnection.connect(FtpURLConnection.java:270)
at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(FtpURLConnection.java:352)
at java.net.URL.openStream(URL.java:1010)
at com.nuance.nlu.JavaApiExmaple.main(Exmaple.java:191)
ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
JDWP exit error AGENT_ERROR_NO_JNI_ENV(183): [../../../src/share/back/util.c:820]
但是如果我使用:
URL u = new URL("file:///D:/abc.xml");
(文件后有 3 个斜杠),或者:URL u = new URL("file:/D:/abc.xml");
(文件后有 1 个斜线:)
代码行 InputStream input = u.openStream();
执行得很好。
最佳答案
先看:What is the reason that file URLs start with three slashes: “file:///” etc?获取详细说明。
摘自该回答:
The complete syntax is
file://host/path
.If the host is
localhost
, it can be omitted, resulting infile:///path
.
关于java - 当 URL 以 "file://"开头时,URL.openstream 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929456/