我只知道不能下载的原因是存在特殊字符,解决办法还未找到,如果有大佬的知道的话,麻烦告知一声,谢谢。
public class URLDemo {
public static void main(String[] args) throws Exception {
//能下载
// URL url = new URL("https://bkimg.cdn.bcebos.com/pic/83025aafa40f4bfb1cdbae8f054f78f0f63618e5?x-bce-process=image/resize,m_lfit,w_790,limit_1/format,f_auto");
//不能下载,存在特殊字符
URL url = new URL("https://cn.bing.com/images/search?view=detailV2&ccid=uJADC%2fIU&id=DD81600752545AFE89285220EE60C092EABA4E93&thid=OIP.uJADC_IUgy_FZ0sH5yHFewHaE7&mediaurl=https%3a%2f%2ftse1-mm.cn.bing.net%2fth%2fid%2fR-C.b890030bf214832fc5674b07e721c57b%3frik%3dk0666pLAYO4gUg%26riu%3dhttp%253a%252f%252fphoto.16pic.com%252f00%252f57%252f76%252f16pic_5776826_b.jpg%26ehk%3dLqORCX6odu%252fI53UqMbTfiQRhYYLUZZadlz0XkhP90A4%253d%26risl%3d%26pid%3dImgRaw%26r%3d0&exph=665&expw=1000&q=%e6%b5%b7%e6%b4%8b&simid=608009924338285654&FORM=IRPRST&ck=E15CA9FFDA72A947A01396D1DBB71589&selectedIndex=5&ajaxhist=0&ajaxserp=0");
String host = url.getHost();
System.out.println(host); //获取该URL的主机名
//端口号,如果未设置端口号,则返回 -1
System.out.println(url.getPort()); //获取该URL的端口号
System.out.println(url.getProtocol()); //获取该URL的协议名
InputStream openStream = url.openStream();
OutputStream outputStream = new FileOutputStream("D:"+File.separator+"c.jpg");
int read = 0;
while((read = openStream.read())!=-1) {
outputStream.write(read);
}
openStream.close();
outputStream.close();
}
}