1. 标准 URI 的语法组成
标准的 URI 语法组成如下:
[scheme:]scheme-specific-part[#fragment]
各部分说明请参考:http://www.cjsdn.net/doc/jdk50/java/net/URI.html
getSchemeSpecificPart() 方法即返回中间的 scheme-specific-part 必选部分。
2. getSchemeSpecificPart 返回部分的编码方式:转义八位组
这里只能大概的推测一下,具体还需要验证:
我的理解:该方法返回的 scheme-specific-part 部分已经进行了转义处理,比如当中的一些特殊字符 “%” “#”等若要在该方法中正常返回,则需要将特殊字符的转义编码(一般是utf-8的编码形式)写进URI才能识别出来,比如 “#” 必须用 “%23” 代替。其它非特殊字符则不需写成转义形式(也没有这一说)。
“%” 和 “#” 在 URI 中是两个特殊的字符,"%" 是转义的开头、"#" 是标识 fragment 的开始,比如,你在创建文件的 URI 的文件名中一定要包含这两个字符,可以这样处理:
try {
if (filename.contains("%") || filename.contains("#")) {
filename = filename.replaceAll("%", URLEncoder.encode("%", "utf-8")); //注意,一定要先处理完 %,原因自己想吧,呵呵
filename = filename.replaceAll("#", URLEncoder.encode("#", "utf-8"));
}
} catch (UnsupportedEncodingException e) {}
然后将 filename 作为你的 URI 文件名部分就行了!
3. 参考
http://www.cjsdn.net/doc/jdk50/java/net/URI.html