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

2022-09-03 00:56:29

在Java中,有没有一种标准/好的方法可以在URL和Windows文件名之间进行转换?

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

我目前的黑客解决方案是将非法字符(如“?”)替换为特定字符串(如“QQ”),但这会使转换回URL的透明度降低。有没有更好的方法?


答案 1

你可能比使用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");

答案 2

java.io.File 类采用 URI &|文件名作为构造函数,但包含 & 方法以及 & .我想这对您来说是一个有效的转换?toURI()toURL()getName()getPath()