是否有一种标准/良好的方法可以在Java中在URL和Windows文件名之间进行转换?
我正在尝试下载文件,但我希望Windows文件名可以转换回原始文件名。请注意,url的查询部分非常重要,因为我将下载仅在查询不同的不同页面。
我的当前解决方案是用特定字符串(如“QQ”)替换非法字符(如“?”),但这使得转换回url不够透明。是否有更好的方法?
是否有一种标准/良好的方法可以在Java中在URL和Windows文件名之间进行转换?
我正在尝试下载文件,但我希望Windows文件名可以转换回原始文件名。请注意,url的查询部分非常重要,因为我将下载仅在查询不同的不同页面。
我的当前解决方案是用特定字符串(如“QQ”)替换非法字符(如“?”),但这使得转换回url不够透明。是否有更好的方法?
String url = "http://172.0.0.1:80/foo/bar/baz.txt?black=white";
String filename = URLEncoder.encode(url, "UTF-8");
File file = new File(filename);
文件名变成了合法的Win32名称:http%3A%2F%2F172.0.0.1%3A80%2Ffoo%2Fbar%2Fbaz.txt%3Fblack%3Dwhite
这是一种可逆操作:
String original = URLDecoder.decode(filename, "UTF-8");