通过Java HTTP连接将网络图片下载到本地
通过Java HTTP连接将网络图片下载到本地
只知道浏览器使用的是HTTP协议,那么如何将网络资源使用JavaHTTP下载下来呢!
这只是一个非常简单的小示例,只是不想每次碰到关于此方面的内容忘了就无从下手!
示例创建HttpURLConnection网络连接,并将这个连接获得的网络数据流写道本地磁盘!
第一种方法:
示例代码如下:
- package imageView;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- /**
- * @说明 从网络获取图片到本地
- * @author 崔素强
- * @version 1.0
- * @since
- */
- public class GetImage {
- /**
- * 测试
- * @param args
- */
- public static void main(String[] args) {
- String url = "http://www.baidu.com/img/baidu_sylogo1.gif";
- byte[] btImg = getImageFromNetByUrl(url);
- if(null != btImg && btImg.length > 0){
- System.out.println("读取到:" + btImg.length + " 字节");
- String fileName = "百度.gif";
- writeImageToDisk(btImg, fileName);
- }else{
- System.out.println("没有从该连接获得内容");
- }
- }
- /**
- * 将图片写入到磁盘
- * @param img 图片数据流
- * @param fileName 文件保存时的名称
- */
- public static void writeImageToDisk(byte[] img, String fileName){
- try {
- File file = new File("C:\\" + fileName);
- FileOutputStream fops = new FileOutputStream(file);
- fops.write(img);
- fops.flush();
- fops.close();
- System.out.println("图片已经写入到C盘");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 根据地址获得数据的字节流
- * @param strUrl 网络连接地址
- * @return
- */
- public static byte[] getImageFromNetByUrl(String strUrl){
- try {
- URL url = new URL(strUrl);
- HttpURLConnection conn = (HttpURLConnection)url.openConnection();
- conn.setRequestMethod("GET");
- conn.setConnectTimeout(5 * 1000);
- InputStream inStream = conn.getInputStream();//通过输入流获取图片数据
- byte[] btImg = readInputStream(inStream);//得到图片的二进制数据
- return btImg;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- /**
- * 从输入流中获取数据
- * @param inStream 输入流
- * @return
- * @throws Exception
- */
- public static byte[] readInputStream(InputStream inStream) throws Exception{
- ByteArrayOutputStream outStream = new ByteArrayOutputStream();
- byte[] buffer = new byte[1024];
- int len = 0;
- while( (len=inStream.read(buffer)) != -1 ){
- outStream.write(buffer, 0, len);
- }
- inStream.close();
- return outStream.toByteArray();
- }
- }
不懂的话看这个示例一看就知道各行代码的意思了,因为很简单,图片被写入到了C盘!
第二种方法:
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.URL;
- import java.net.URLConnection;
- public class DownloadImage {
- /**
- * @param args
- * @throws Exception
- */
- public static void main(String[] args) throws Exception {
- // TODO Auto-generated method stub
- download("http://ui.51bi.com/opt/siteimg/images/fanbei0923/Mid_07.jpg", "51bi.gif","c:\\image\\");
- }
- public static void download(String urlString, String filename,String savePath) throws Exception {
- // 构造URL
- URL url = new URL(urlString);
- // 打开连接
- URLConnection con = url.openConnection();
- //设置请求超时为5s
- con.setConnectTimeout(5*1000);
- // 输入流
- InputStream is = con.getInputStream();
- // 1K的数据缓冲
- byte[] bs = new byte[1024];
- // 读取到的数据长度
- int len;
- // 输出的文件流
- File sf=new File(savePath);
- if(!sf.exists()){
- sf.mkdirs();
- }
- OutputStream os = new FileOutputStream(sf.getPath()+"\\"+filename);
- // 开始读取
- while ((len = is.read(bs)) != -1) {
- os.write(bs, 0, len);
- }
- // 完毕,关闭所有链接
- os.close();
- is.close();
- }
- }
通过Java HTTP连接将网络图片下载到本地的更多相关文章
- JAVA 实现FTP上传下载(sun.net.ftp.FtpClient)
package com.why.ftp; import java.io.DataInputStream; import java.io.File; import java.io.FileInputSt ...
- (14)[Xamarin.Android] 异步的网络图片下载
原文 [Xamarin.Android] 异步的网络图片下载 在设计要从网络上接大量数据并且显示在Android Listview中,而这些资料是利用Json格式传送并且数据中包含这图片档案. 那在X ...
- CentOS下安装配置NFS并通过Java进行文件上传下载
1:安装NFS (1)安装 yum install nfs-utils rpcbind (2)启动rpcbind服务 systemctl restart rpcbind.service 查看服务状态 ...
- java项目连接jdbc报错:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server
java项目连接jdbc报错:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not creat ...
- java读取网页图片路径并下载到本地
java读取网页图片路径并下载到本地 最近公司需要爬取一些网页上的数据,自己就简单的写了一个demo,其中有一些数据是图片,需要下载下来到本地并且 将图片的路径保存到数据库,示例代码如下: packa ...
- 虚拟机centos 安装 redis 环境 linux 使用 java 远程连接 redis
redis官网地址:http://www.redis.io/ 最新版本:2.8.3 在Linux下安装Redis非常简单,具体步骤如下(官网有说明): 1.下载源码,解压缩后编译源码. $ wget ...
- Java-Runoob-高级教程:Java MySQL 连接
ylbtech-Java-Runoob-高级教程:Java MySQL 连接 1.返回顶部 1. Java MySQL 连接 本章节我们为大家介绍 Java 如何使用 使用 JDBC 连接 MySQL ...
- Redis02 Redis客户端之Java、连接远程Redis服务器失败
1 查看支持Java的redis客户端 本博文采用 Jedis 作为redis客户端,采用 commons-pool2 作为连接redis服务器的连接池 2 下载相关依赖与实战 2.1 到 Repos ...
- 使用java的 htpUrlConnection post请求 下载pdf文件,然后输出到页面进行预览和下载
使用java的 htpUrlConnection post请求 下载pdf文件,然后输出到页面进行预览和下载 2018年06月07日 10:42:26 守望dfdfdf 阅读数:235 标签: jav ...
随机推荐
- Bisecting GlcNAc is a general suppressor of terminal modification of N-glycan (解读人:王茹凯)
文献名:Bisecting GlcNAc is a general suppressor of terminal modification of N-glycan(平分GlcNAc是N-聚糖末端修饰的 ...
- Java中内部类和静态内部类的区别
内部类和静态内部类 示例 public class OuterClass { private int numPrivate = 1; public int numPublic = 2; public ...
- Android之注册界面练习
今天要分享的是一个安卓注册小练习,记录一下自己的学习. 做一个注册页面. 要求填入用户如下信息: 用户名.密码.确认密码.性别(单选).爱好(多选,包括至少六个选项,如音乐.美术.阅读.篮球等).em ...
- 曹工说Spring Boot源码(26)-- 学习字节码也太难了,实在不能忍受了,写了个小小的字节码执行引擎
曹工说Spring Boot源码(26)-- 学习字节码也太难了,实在不能忍受了,写了个小小的字节码执行引擎 写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean De ...
- Springboot CORS跨域访问
Springboot CORS跨域访问 什么是跨域 浏览器的同源策略限制: 它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础 ...
- 使用Python+OpenCV进行图像处理(二)| 视觉入门
[前言]图像预处理对于整个图像处理任务来讲特别重要.如果我们没有进行恰当的预处理,无论我们有多么好的数据也很难得到理想的结果. 本篇是视觉入门系列教程的第二篇.整个视觉入门系列内容如下: 理解颜色模型 ...
- Hadoop 同步集群时间ntp
root 用户操作 1,rpm -qa|grep ntp 查看机器是否安装ntp 2,vi /etc/ntp.conf 修改: #restrict 192.168.1.0 mask 255.255.2 ...
- Hystrix 使用手册 | 官方文档翻译
由于时间关系可能还没有翻译全,但重要部分已基本包含 本人水平有限,如有翻译不当,请多多批评指出,我一定会修正,谢谢大家.有关 ObservableHystrixCommand 我有的部分选择性忽略了, ...
- IE,Google Chrome等浏览器,调试模式在控制台可以手动调用页面的方法来调试
IE,Google Chrome等浏览器,调试模式在控制台可以手动调用页面的方法来调试,这种方式也可以进断点.
- Python常用模块之configparser
ConfigParser简介 ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号“[ ]”内包含的为section.section 下面为类似于key-value 的配置内容 ...