URIでfileをみるとき/が一本たりないことに注意
2007/11/02
2008/01/20
java
uri
url
非常にはまったのでメモ
環境
Windows上で、Cドライブの直下にtmpというディレクトリがありそこにtest.propというファイルがあります。
ブラウザ上で、URLを入力する欄に
file://c:/tmp/test.prop
といれるとファイルが開けます。
これをjavaで指定すると開くことができませんでした。
それで、ただしくは、
file:///c:/tmp/test.prop
ちなみに出てくる例外は以下
Exception in thread "main" java.net.UnknownHostException: c
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
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:1009)
at prop.Test.main(Test.java:17)
FtpClientが動き出しています。
package prop;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Properties;
public class Test {
public static void main(String[] args) throws URISyntaxException,
IOException {
URI uri = new URI("file:///c:/tmp/test.prop");
URL url = uri.toURL();
InputStream stream = url.openStream();
Properties properties = new Properties();
properties.load(stream);
System.out.println(properties.get("test1"));
}
}
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Properties;
public class Test {
public static void main(String[] args) throws URISyntaxException,
IOException {
URI uri = new URI("file:///c:/tmp/test.prop");
URL url = uri.toURL();
InputStream stream = url.openStream();
Properties properties = new Properties();
properties.load(stream);
System.out.println(properties.get("test1"));
}
}
その他、参考
プログラマメモ2: [java]URIとURL
: