クラスローダーを使用してファイルを開きたい。ただし、常にFileNotFoundExceptionが発生します。URLを使用して新しいファイルを作成するにはどうすればよいですか?ファイルのようにストリームとして開きたくありません。
URL url = VersionUpdater.class.getResource("xslt/screen/foo");
File f = ...
クラスローダーを使用してファイルを開きたい。ただし、常にFileNotFoundExceptionが発生します。URLを使用して新しいファイルを作成するにはどうすればよいですか?ファイルのようにストリームとして開きたくありません。
URL url = VersionUpdater.class.getResource("xslt/screen/foo");
File f = ...
file://...
URLをに変換するには、とjava.io.File
を組み合わせて安全なソリューションを実現する必要があります。url.getPath()
url.toURI()
File f;
try {
f = new File(url.toURI());
} catch(URISyntaxException e) {
f = new File(url.getPath());
}
このブログ投稿の完全な説明。
私はただ考えています: foo が jar に入っている場合はどうなりますか? 次に、ファイルを作成できませんでした。
foo が実際に (ローカル) クラスパス ディレクトリにある場合は、動作させることができるはずですが、ご存知のように、誰かが jar にパッケージ化したり、ネットワーク経由でロードしたりすると失敗します...