java中网络下载,用JAVA代码实现下载网络上的资源

该博客介绍了如何使用Java的HttpURLConnection和URL类实现从网络下载资源,以下载图片为例,展示了设置请求方式、获取状态码以及读取并保存网络资源的步骤。代码示例清晰,适合初学者理解HTTP下载的基本原理。
摘要由CSDN通过智能技术生成

前面整理过基于UDP/TCP协议的网络编程,这里教大家用简单的代码实现下载网络资源的功能。在这里使用到了http协议的相关java类---URL和HttpURLConnection,关于这两个类的深入学习可以查看相关API。

以下载百度上的一张图片为例,代码如下:

package http;

//导包

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

public class CatchPic {

/**

* 实现从指定网址获取一张图片

* @throws IOException

*/

public static void main(String[] args) throws IOException {

//调用catchPic方法从网络上下载一张图片

catchPic();

}

public static void catchPic() throws IOException

{

//创建URL对象,参数传递一个String类型的URL解析地址

URL url = new URL("http://img04.tooopen.com/images/20131202/sy_49706261893.jpg");

//HttpURLConnection是protected修饰的,无法直接new对象

//url的openConnection方法返回值是URLConnection类的对象,需要强转为HttpURLConnection

//所以直接通过url调用openConnection方法来实现创建HttpURLConnection的对象

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

//设置请求方式

huc.setRequestMethod("GET");

int code=0;

// 从 HTTP 响应消息获取状态码

//200表示ok,500表示服务器错误,404表示找不到

code =huc.getResponseCode();

//如果状态码为200,表示连接ok,可以继续操作

if(code==200)

{

//获取输入流

InputStream ips = huc.getInputStream();

//采用高效输入流获取网络上的资源

BufferedInputStream bis=new BufferedInputStream(ips);

BufferedOutputStream bos= new BufferedOutputStream(new FileOutputStream("/home/sker/桌面/meitu.jpg"));

byte[] b=new byte[1024];

int len=0;

//将数据写入文件

while((len=bis.read(b))!=-1)

{

bos.write(b,0,len);

//刷新资源------在前面IO部分提到过,write方法使用完需要刷新

bos.flush();

}

//关闭流,释放资源

bos.close();

bis.close();

ips.close();

}

}

}

如下是网络上的资源以及下载到本地的资源图

b754181a061a27ef227766bef19034ea.png

6db4fe98663883e55bd739a6b2368da9.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值