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

发布于 2021-01-30 16:25:30

在Java中,是否存在在URL和Windows文件名之间转换的标准/良好方法?

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

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

关注者
0
被浏览
73
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看