在URL和Windows文件名(Java)之间转换?
在Java中,是否存在在URL和Windows文件名之间转换的标准/良好方法?
我正在尝试下载文件,但是我希望Windows文件名可以转换回原始文件名。请注意,URL的查询部分至关重要,因为我将下载仅在查询方面有所不同的不同页面。
我当前的hacky解决方案是用特定的字符串(例如“ QQ”)替换非法字符(例如“?”),但这会使转换回url的透明度降低。有没有更好的办法?
-
您可能比使用URLEncoder对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");