%2f或普通vfs中的其他特殊字符

时间:2012-09-28 05:39:20

标签: java apache-commons-vfs

最近,我在通过commons-vfs解析文件路径时遇到了问题。

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

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

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

你对这个问题有所了解吗?我想要一个名称包含'%2f'的文件。

非常感谢。

1 个答案:

答案 0 :(得分:0)

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

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

BTW:%2f是一个编码/,你确定应该这样命名吗?