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 回答