OKhttp实现文件资源下载

本文介绍如何利用OKHttp库实现网络图片的下载,并将其保存到本地文件系统中。通过添加依赖、定义方法来实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能需求:将网络资源图片下载并存储至本地


1、添加依赖

OKhttp相比HttpURLConnection和httpClient更高效方便。项目采用gradle构建,首先添加OKhttp相关依赖,依赖如下(可查看jar包的最新版本:http://search.maven.org/ ):

dependencies {    
    compileOnly "***"
       ·
       ·
       ·
    compile 'com.squareup.okhttp3:okhttp:3.4.1' 
}

2、方法定义(以网络图片下载为例)

  • 传参:   

   1、网络URL参数:photoOnlinePath;

   2、本地存储路径:photoLocalPath

public void downloadPhoto(String photoOnlinePath, String photoLocalPath) {
    File myPath = new File(photoLocalPath);
    String directory = myPath.getParent();
    File mydirectory = new File(directory);
    if (!mydirectory.exists()) {
        //若此目录不存在,则创建之
        mydirectory.mkdirs();
    }
    OkHttpClient okHttpClient = new OkHttpClient();
    okhttp3.Request request = new okhttp3.Request.Builder().get().url(photoOnlinePath).build();
    try{
        Response response = okHttpClient.newCall(request).execute();
        if (!response.isSuccessful()) {
            logger.debug("http request {} connect failed", photoOnlinePath);
        } else {
            logger.info("http request {} connect success,start write in", photoOnlinePath);
            InputStream is;
            is = response.body().byteStream();
            FileOutputStream fos=null;
            try{
                fos = new FileOutputStream(myPath);
                int len;
                byte[] bytes = new byte[1024];
                while ((len = is.read(bytes)) != -1) {
                    fos.write(bytes, 0, len);
                }
            }catch (IOException oue){
                logger.debug("save photo {} to local dir {} failed!", photoOnlinePath, photoLocalPath);
            }finally {
                if (is != null) {
                    try{
                        is.close();
                    }catch (IOException isclose){
                        logger.error("close InputStream failed");
                    }
                }
                if (fos!=null){
                    try{
                        fos.close();
                    }catch (IOException fosclose){
                        logger.error("close FileOutputStream failed");
                    }
                }
            }
        }
    }catch (IOException e){
        logger.error("http request {} connect failed", photoOnlinePath);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值