在URL和Windows文件名(Java)之间转换?
在Java中,有没有一种标准/好的方法可以在URL和Windows文件名之间进行转换?
我正在尝试下载文件,但我希望Windows文件名可以转换回原始文件名。请注意,url的查询部分至关重要,因为我将下载仅在查询中不同的不同页面。
我目前的黑客解决方案是将非法字符(如“?”)替换为特定字符串(如“QQ”),但这会使转换回URL的透明度降低。有没有更好的方法?
在Java中,有没有一种标准/好的方法可以在URL和Windows文件名之间进行转换?
我正在尝试下载文件,但我希望Windows文件名可以转换回原始文件名。请注意,url的查询部分至关重要,因为我将下载仅在查询中不同的不同页面。
我目前的黑客解决方案是将非法字符(如“?”)替换为特定字符串(如“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");
java.io.File 类采用 URI &|文件名作为构造函数,但包含 & 方法以及 & .我想这对您来说是一个有效的转换?toURI()
toURL()
getName()
getPath()