URIでfileをみるとき/が一本たりないことに注意 2007/11/02
2008/01/20

非常にはまったのでメモ

環境

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"));

}

}


その他、参考
プログラマメモ2: [java]URIとURL

: