我有两个字符串。一个命名文件夹的绝对(或相对)路径。另一个命名一个带有潜在不安全字符的文件名:
String folder = "C:\a\b\c\dir";
Sting file = "file name: contains-unsafe_characters?" + ".txt"
我想以如下形式将它们粉碎成字符串:
String absPath = folder + SYSTEM_INDEPENDENT_PATH_SEPERATOR + convertToPercentOctal(folder);
现在,可能有一百万种方法可以尝试做到这一点:
UriBuilder folderBuilder = UriBuilder.fromPath(folder);
UriBuilder fileBuilder = UriBuilder.fromPath(file);
URI completeFileName = folderBuilder.build().resolve(fileBuilder.build());
或者:
URI completeFileName = UriBuilder.fromPath(folder).path(file).build();
等等
第一个代码块失败,因为文件名中可能有:。如果是这种情况,UriBuilder 将尝试将其解析为可选方案: . 第二种方法失败,因为它返回转换为 %octal 表示法的前半部分和后半部分,由系统相关的 '/' 字符分隔。
有没有办法连接两个字符串,将结果转换为可写文件名,并返回一个我可以用来创建文件的有效 URI?