最近,我在通过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'的文件。
非常感谢。
答案 0 :(得分:0)
resolveFile()
需要一个URI,实际上你需要转义几个字符。您可以通过URL编码运行文件路径,也可以使用new File("/tmp/tempfile%2flicense.xml").toURI().toString()
(至少用于合理的文件名)。
在您的情况下,您需要将%
替换为%25
:" /tmp/tempfile%252flicense.xml"