替换文件名中的保留字符

时间:2018-01-10 10:38:16

标签: java regex

我需要将文件从云下载到Windows。虽然windows不允许:?|'<> *!\“这些字符在文件名中。我需要替换这些字符,然后再转换回这些字符。我是否用Java做。现在我我正在使用正则表达式

filename.replaceAll(INVALID_CHARACTER_REGEX, invalidCharReplacement);

但是我不想用单个字符替换,而且我需要在将来转换回原始文件名。请帮忙

2 个答案:

答案 0 :(得分:1)

正则表达式不是正确的工具,正则表达式可以匹配无效字符但不能替换为其他特定序列。为了能够进行反向操作,可以选择一个特殊的转义字符,例如带有%的URLEncoder,但URLEncoder *保持不变。

请注意,即使URLEncoder不编码*,URLDecoder也会解码%2A

编码功能可以是

URLEncoder.encode(string, "UTF-8").replace("*","%2A");

和解码功能

URLEncoder.decode(string, "UTF-8");

答案 1 :(得分:0)

确定。而不是重命名文件。我刚刚将文件名转换为base64string,然后在上传到云之前转换回来。这解决了我的问题。如果我的问题不具体,那就太好了。