在URL和Windows文件名(Java)之间转换?

Pau*_*aul 16 java windows url file

在Java中,是否有一种在urls和windows文件名之间进行转换的标准/好方法?

我正在尝试下载文件,但我希望Windows文件名可以转换回原始文件名.请注意,网址的查询部分至关重要,因为我将下载仅在查询中有所不同的不同页面.

我目前的hacky解决方案是用特定字符串(例如'QQ')替换非法字符(例如'?'),但这会使转换回url的透明度降低.有没有更好的办法?

McD*_*ell 23

您可能比使用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);
Run Code Online (Sandbox Code Playgroud)

文件名成为合法的win32名称:

http%3A%2F%2F172.0.0.1%3A80%2Ffoo%2Fbar%2Fbaz.txt%3Fblack%3Dwhite
Run Code Online (Sandbox Code Playgroud)

这是一个可逆的操作:

String original = URLDecoder.decode(filename, "UTF-8");
Run Code Online (Sandbox Code Playgroud)