【Java获取下载文件URL的真实文件名,并防止乱码】


有的时候下载链接的后缀并不是文件真实名字,我们想要获得其真实文件名需要进行一些处理:

主要是获得header信息

代码如下:

        String href = "https://yyyyy.xxxxxxx(下载Url)";
        URL url = null;
            try {
                url = new URL(href);
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }

        try {
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.connect();//获取文件名和扩展名
            conn.getResponseCode();
            href = conn.getURL().toString();
            //获取header 确定文件名和扩展名,并防止乱码
            fileName =   new String(conn.getHeaderField("Content-Disposition").getBytes("ISO-8859-1"), "UTF-8"); 
            System.out.println(fileName);

        } catch (IOException e) {
            e.printStackTrace();
        }
添加getBytes方法 :new String(conn.getHeaderField("Content-Disposition").getBytes("ISO-8859-1"), "UTF-8")是为了防止乱码

效果如图: