我需要将文件从云下载到Windows。虽然windows不允许:?|'<> *!\“这些字符在文件名中。我需要替换这些字符,然后再转换回这些字符。我是否用Java做。现在我我正在使用正则表达式
filename.replaceAll(INVALID_CHARACTER_REGEX, invalidCharReplacement);
但是我不想用单个字符替换,而且我需要在将来转换回原始文件名。请帮忙
答案 0 :(得分:1)
正则表达式不是正确的工具,正则表达式可以匹配无效字符但不能替换为其他特定序列。为了能够进行反向操作,可以选择一个特殊的转义字符,例如带有%
的URLEncoder,但URLEncoder *
保持不变。
请注意,即使URLEncoder不编码*
,URLDecoder也会解码%2A
。
编码功能可以是
URLEncoder.encode(string, "UTF-8").replace("*","%2A");
和解码功能
URLEncoder.decode(string, "UTF-8");
答案 1 :(得分:0)
确定。而不是重命名文件。我刚刚将文件名转换为base64string,然后在上传到云之前转换回来。这解决了我的问题。如果我的问题不具体,那就太好了。