java通过url下载_java 通过一个url下载网上文件

1.基本流程

当我们想要下载网站上的某个资源时,我们会获取一个url,它是服务器定位资源的一个描述,下载的过程有如下几步:

(1)客户端发起一个url请求,获取连接对象。

(2)服务器解析url,并且将指定的资源返回一个输入流给客户。

(3)建立存储的目录以及保存的文件名。

(4)输出了写数据。

(5)关闭输入流和输出流。

2.实现代码的方法

/**

* 从网络Url中下载文件

* @param urlStr

* @param fileName

* @param savePath

* @throws IOException

*/

public static void  downLoadFromUrl(String urlStr,String fileName,String savePath) throws IOException{

URL url = new URL(urlStr);

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

//设置超时间为3秒

conn.setConnectTimeout(3*1000);

//防止屏蔽程序抓取而返回403错误

conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

//得到输入流

InputStream inputStream = conn.getInputStream();

//获取自己数组

byte[] getData = readInputStream(inputStream);

//文件保存位置

File saveDir = new File(savePath);

if(!saveDir.exists()){

saveDir.mkdir();

}

File file = new File(saveDir+File.separator+fileName);

FileOutputStream fos = new FileOutputStream(file);

fos.write(getData);

if(fos!=null){

fos.close();

}

if(inputStream!=null){

inputStream.close();

}

System.out.println("info:"+url+" download success");

}

/**

* 从输入流中获取字节数组

* @param inputStream

* @return

* @throws IOException

*/

public static byte[] readInputStream(InputStream inputStream) throws IOException {

byte[] buffer = new byte[1024];

int len = 0;

ByteArrayOutputStream bos = new ByteArrayOutputStream();

while((len = inputStream.read(buffer)) != -1) {

bos.write(buffer, 0, len);

}

bos.close();

return bos.toByteArray();

}

public static void main(String[] args) {

try{

downLoadFromUrl("http://101.95.48.97:8005/res/upload/interface/apptutorials/manualstypeico/6f83ce8f-0da5-49b3-bac8-fd5fc67d2725.png",

"百度.jpg","d:/resource/images/diaodiao/country/");

}catch (Exception e) {

// TODO: handle exception

}

}


版权声明:本文为weixin_39687786原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。