1

最近在commons-vfs解析文件路径时遇到一个问题。

  FileObject tmpDestFo = fsm.resolveFile("/tmp/tempfile%2flicense.xml");
  tmpDestFo.copyFrom(destFo);

例如,复制后我期望的是在“/tmp”目录下创建一个名为“tempfile%2flicense.xml”的文件。但结果是在“/tmp/tempfile”目录中创建了一个名为“license.xml”的文件。

我认为这是由将字符 '%2f' 替换为 '/' 的 resolveFile API 引起的。我不确定其他特殊字符是否以相同的方式处理。

你对这个问题有什么想法吗?我确实想要一个名称包含“%2f”的文件。

非常感谢。

4

1 回答 1

0

resolveFile()需要一个 URI,你实际上需要转义很多字符。您可以通过 URL 编码运行文件路径,也可以使用new File("/tmp/tempfile%2flicense.xml").toURI().toString()(至少对于健全的文件名)。

在您的情况下,您需要替换%%25:“/tmp/tempfile%252flicense.xml”

顺便说一句:%2f 是一个编码的 /,你确定它应该这样命名吗?

于 2015-01-06T00:05:48.560 回答