5

Windows 7 で org.apache.commons.io バージョン 2.4 を使用してファイルを文字列に読み込もうとしています。

String protocol = url.getProtocol();
  if(protocol.equals("file")) {
  File file = new File(url.getPath());
  String str = FileUtils.readFileToString(file);
}

しかし、それは失敗します:

java.io.FileNotFoundException: File 'C:\workspace\project\resources\test%20folder\test.txt' does not exist

しかし、もしそうなら:

String protocol = url.getProtocol();
  if(protocol.equals("file")) {
  File file = new File("C:\\workspace\\resources\\test folder\\test.txt");
  String str = FileUtils.readFileToString(file);
}

私は元気に働いています。そのため、パスをスペース/空白で手動で入力すると機能しますが、URL から作成すると機能しません。

私は何が欠けていますか?

4

1 に答える 1

14

これを試して:

File file = new File(url.toURI())

ところで、あなたは既に Apache Commons IO を使用しているのですから (あなたにとっては良いことです!)、ファイルやパスの代わりにストリームで作業してみませんか?

IOUtils.toString(url.openStream(), "UTF-8");

を使用してIOUtils.toString(InputStream, String)います。オペレーティング システムの依存関係を避けるために、エンコードを明示的に渡していることに注意してください。同様にそれを行う必要があります:

String str = FileUtils.readFileToString(file, "UTF-8");
于 2013-01-09T22:10:53.173 に答える