如何使用Jersey UriBuilder将相对文件名中的不安全字符转换为安全版本?

时间:2012-07-09 23:00:59

标签: java file path jersey uri

我有两个字符串。一个人命名文件夹的绝对(或相对)路径。另一个名称是带有可能不安全字符的文件名:

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将尝试将其解析为可选的方案:。第二种方法失败,因为它返回的第一个和第二个半转换为由系统依赖'/'字符分隔的%八进制表示法。

有没有办法连接两个字符串,将结果转换为可写文件名,并返回一个可用于创建文件的有效URI?

0 个答案:

没有答案