android中如何处理图片下载不完整的情况?

2024-04-27

我正在应用程序中下载图像以将其填充到用户界面上。

这是我用来下载该图像并将其保存到设备外部存储器的代码。

        File firstDirectory=new File(Environment.getExternalStorageDirectory()+"/Catalog");     
        if (firstDirectory.exists()==false) 
        {
            firstDirectory.mkdir();
        }

        for (int i = 0; i <list.size() && !isCancelled(); i++) {

            Content content= list.get(i);
            try 
                {

            File firstFile =new File(firstDirectory+"/"+content.getId()+".jpeg");
            if (firstFile.exists()==false || firstFile.length()==0) 
            {               
                Boolean status=firstFile.createNewFile();   
                HttpClient httpClient = new DefaultHttpClient();
                HttpGet httpGet = new HttpGet(kSubURL+content.getPublisherID()+"&tid="+content.getId()+"_370&tp=i");
                HttpResponse resp = httpClient.execute(httpGet);
                HttpEntity entity= resp.getEntity();
                InputStream is = entity.getContent();
                    FileOutputStream foutS = new FileOutputStream(firstFile);

                    byte[] buffer = new byte[1024];                 
                    long total = 0;
                    int count;
                    while ((count = is.read(buffer)) != -1) {
                        total += count;
                        foutS.write(buffer, 0, count);
                    }

                    foutS.close();
                    is.close();
            }

        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

此代码可以正常工作,可以将图像下载并保存到设备上。但问题是,有时图像没有完全下载。此类案件如何处理?即使响应代码为 200,图像也无法正确下载。在这种情况下,图像看起来像这样

谁能告诉我如何正确处理这种情况?如果应用程序在写入数据时意外终止,那么如何处理这种情况?在这种情况下,图像也被部分写入磁盘,并且我的图像未正确加载到图像视图上。

另外,请告诉我在将图像填充到 ImageView 时是否可以检查图像是否正确加载。


我对此也做了很多研究,最后我通过检查图像长度克服了这个问题

URL url = new URL(url);
URLConnection conection = url.openConnection();
conection.connect();
fileLength = conection.getContentLength();

check fileLength和下载的图像文件长度。如果相等或接近相等则下载成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android中如何处理图片下载不完整的情况? 的相关文章

  • kotlin中的三元运算符[重复]

    这个问题在这里已经有答案了 我可以用java写 int i 10 String s i 10 Ten Empty 即使我可以将它传递到方法参数中 callSomeMethod i 10 Ten Empty 如何将其转换为 kotlin 在
  • 在 Android 中解析日期时出现意外的副作用

    在各种Android项目中 我使用以下静态函数来解析日期 例如1900 12 31 当然 这个函数应该是确定性的 但事实证明并非如此 为什么 通常 它解析日期2010 10 30 例如 到正确的Date持有该值的实例 但我注意到 当我有一个
  • 如何更改所有 ListView 的默认分隔线颜色

    我正在尝试为 style xml 中的所有 listView 应用默认样式 请注意 在某些地方我使用嵌套列表视图 In 样式 xml
  • Zxing库无法解析

    我正在使用 zxing 库开发应用程序 我导入了zxing项目到我的工作场所 当我导入时遇到了一些问题 通过编译项目java 1 7 我做到了 CameraConfigurationUtils失踪 我从library source Reso
  • 人体的宽度和高度

    如何识别图像中人体的高度和宽度 你需要一些参考点 除非您知道相机设置 位置 变焦 镜头畸变等 以及人相对于相机的位置 否则简单的照片是不够的 如果您确实有参考 例如背景中的网格或其他东西 那么您可以测量网格并从那里开始 听起来不像你需要的
  • 将文本视图添加到布局中?

    如果我的按钮不移动 我就无法在按钮上方放置文本视图 我该如何解决这个问题 被困在这个问题上 4 个小时了 这很伤心 因为我正在尝试在我的布局上添加一个文本视图 我的布局中心有 4 个按钮 我只想在四个按钮上方添加一个文本视图 如下所示 Te
  • WebView ssl 错误

    对不起我的英语不好 我需要加载 url https 我有一些问题 当我尝试加载页面时 webView 给我错误 primary error 3 certificate Issued to CN my site com Issued by C
  • 如何使用GDK在卡片上显示静态地图?

    在 Mirror API 中我们可以使用类似的东西 img src height 360 width 240
  • 如何在 Android 上禁用 HTML 输入中的自动更正?

    我无法在 Android 上的网络浏览器中禁用文本输入的自动更正 我试过这个
  • Android 布局崩溃

    I use a XWalkView https crosswalk project org 加载网页和视频查看器 https github com Bilibili ijkplayer在我的应用程序中播放实时视频 我希望 IjkVideoV
  • 为什么Android和IOS11无法通过NFC通信

    目前正在使用 React Native 并尝试使用反应本机 NFC ios https www npmjs com package react native nfc ios and 反应本机 NFC https github com Nov
  • 为什么 Kotlin 数据类对象有反引号?

    这是我使用 Kotlin 数据类创建器插件创建的数据类 data class ResponseHealthInisghts val data List
  • 如何使用 Misc.imread 将图像分割为红色、绿色和蓝色通道

    我正在尝试将图像切片为 RGB 但在绘制这些图像时遇到问题 我使用此函数从某个文件夹获取所有图像 def get images path image type image list for filename in glob glob pat
  • 如何创建一个类似“隐形”的Android应用程序?

    我想让我的应用程序以某种 隐形 模式运行 我想做的两件主要事情 不以编程方式在已安装的应用程序列表 抽屉 中显示应用程序图标 通过拨号盘启动应用程序 一些特殊的数字组合 我知道我可以删除启动器意图过滤器来隐藏图标
  • Nodejs Base64 中的读取文件

    我正在尝试从客户端读取以 base64 编码的图像 如何使用nodejs进行阅读 My code add to buffer base64 image var encondedImage new Buffer image name base
  • 如何在ListView中添加页脚?

    我正在开发一个应用程序 在我的应用程序中 我使用 Listview 使用 dom 解析显示数据 我想在列表视图中添加页脚 当我单击页脚时将更多数据添加到列表视图中 我附加了图像 我想要该设计和流程 请参考image1和imgae2 我在红色
  • AS更新到1.0后,项目中出现“method ID not in [0, 0xffff]: 65536”错误

    我将 Android Studio 更新到最新版本 并让它 修复项目 之类的 但现在我的项目无法编译 给了我 FAILED FAILURE Build failed with an exception What went wrong Exe
  • 处理带有两个片段的操作栏

    我有一个包含两个片段的布局 两个片段都有自己的操作栏 每个操作栏都有自己的操作项和菜单 当我的应用程序处于横向模式并且两个片段都显示在屏幕上时 看起来框架正在选择在 右侧 或第二个片段 显示操作栏 这意味着左侧的片段 第一个片段 缺少其操作
  • 改造中的 SocketTimeoutException

    我在尝试着POST向服务器请求获取数据但有时会发生SocketTimeoutException I used Ok3Client解决它 但我面临同样的异常 我该如何解决它 我的代码如下 public void getNormalLogin
  • 从纵向活动返回横向活动时屏幕旋转 3 次

    我的 Android 8 1 平板电脑遇到此问题 该设备的自然方向是横向 我有 2 项活动 A配置了fullSensor 包含一个recyclerview来加载带有缩略图的项目 B 是纵向 包含表面视图

随机推荐

  • Oracle 日期索引很慢。没有它查询速度快 300 倍

    我有一个 Oracle 查询 如下所示 运行时间为 10 分钟或更长时间 select r range text as duration range nvl count c call duration 0 as calls nvl SUM
  • 如何在 Bootstrap Modal 中使用 CKEditor?

    如果我使用CKEditor http cksource com ckeditor基于 Bootstrap 模板的 HTML 页面中的插件 效果很好 但是如果我像这样在 Bootstrap Modal 上插入编辑器 div class mod
  • 在 socket.on() 的回调上调度操作

    所以基本上我得到了这个套接字 它工作正常 向我发送 新订单 消息 我正在使用 redux 并且我想分派一个操作 然后减速器会得到它并且我的商店将会更新 但这段代码没有做任何事情 socket on new order order gt re
  • Twitter 错误无法发布推文

    这个错误可能是什么 Could not post Tweet Error 403 Reason Status is a duplicate 实际上这是一条经过编辑的消息 我得到的错误代码为403和原因为Status is a duplica
  • AttributeError:该层从未被调用,因此没有定义的输入形状

    我尝试通过创建三个类在 TensorFlow 2 0 中构建自动编码器 Encoder Decoder 和 AutoEncoder 由于我不想手动设置输入形状 因此我尝试从编码器的 input shape 推断解码器的输出形状 import
  • JSP:已为此响应调用 getOutputStream()

    我正在使用此代码从 FTP 下载文件 我在 tomcat 日志中遇到异常 如下所示 我能够执行我的任务 但我的日志大小增加了很多 Code if file exists if file canRead IE6 SSL PDF Bug htt
  • R 中的高级调试功能?

    R 中是否有任何软件包和 或 hack 可以为调试器提供更多功能 我专门寻找 能够跳过整个循环 无需调用即可单步执行函数调用的能力debug对他们也 设置断点或有效插入的能力browser当我已经在调试器中时调用代码 也就是说 如果我在调试
  • 如何在node.js中将mp3文件更改为wav文件

    我正在尝试将 mp3 文件转换为 wav 文件 但我不知道如何做到这一点 我尝试使用流利的 ffmpeg https www npmjs com package fluent ffmpeg图书馆 但我不知道如何使用它 我终于用 Fluent
  • 从 AspectJ 获取返回值或异常?

    我能够从建议的方法调用中获取签名和参数 但我无法弄清楚如何获取返回值或异常 我有点假设它可以通过使用 around 并继续以某种方式完成 您可以使用after returning and after throwing开头的建议以下文件 ht
  • Android 插件太旧(2.4.0-alpha7)

    我正在使用 android studio 2 4 并收到此错误 显然我必须更新我的 android 插件 但是当我检查 jcenter 的新版本时 唯一的版本 可用的是2 5 0 alpha 预览 02 这会导致完全相同的错误 我还在错误消
  • 无法拦截Android应用程序的流量

    最近 我正在尝试测试和拦截来自开发的应用程序的流量罗莫比尔 我设置了一个代理burp 当然 我已经在我的设备上安装了 burp 证书 因此我可以拦截设备上的其他应用程序 但我无法在 burp suite 上看到相关应用程序的流量 相反 该应
  • Neo4j 入门

    我对 neo4j 完全陌生 很抱歉问这样一个基本问题 我已经安装了 neo4j 我正在使用 shell localhost 7474 webadmin console 我正在寻找一个很好的示例 它使用一些 shell 命令从预先存在的图形数
  • jQuery,将分隔符更改为点并除以两个选定的数字

    var result parseFloat lot2 text parseFloat span Price text result text result 如何将选定值从逗号分隔值转换为点分隔值 有这个函数str replace 但我不知道
  • 向 Rails 中的所有活动链接添加“活动”类?

    基本上 我有很多类似这样的代码 link to t profile business path business class active if current page business path business 这不是很干 我想知道是
  • java中调用父构造函数

    我有两节课Parent and Child 而Parent有一个需要 3 个参数的构造函数 class Parent public Parent String host String path int port 现在我想要Child构造函数
  • 在 Hiera 中进行基本数学运算

    我试图根据自定义事实和基本模数在 hiera 中设置 crontab 的工作日 但我什至不知道这是否可能 我想做这样的事情 cron job command do something user myuser hour instance mi
  • 在 C# 中创建 Cron 作业

    我正在用 C 编写一个调度类型应用程序 并允许用户存储他们想要在特定时间运行的任务 现在 我为他们提供了指定运行频率 每日 每周 每月 以及指定时间的选项 然后将其存储在数据库中 我在理解其背后的伪代码时遇到了一些麻烦 并且正在寻找一些有关
  • std::async 可以调用 std::function 对象吗?

    是否可以使用 std async 调用使用 std bind 创建的函数对象 以下代码无法编译 include
  • 删除 highcharts.com 积分链接

    我刚刚购买高图表 http www highcharts com 但制作人员链接仍然出现在我的图表上 这些图表在我的网站上非常突出 并且扭曲了图表视图 我以为我会有一个选项 那么如何删除它呢 您可以自定义制作人员名单 更改 URL 文本 位
  • android中如何处理图片下载不完整的情况?

    我正在应用程序中下载图像以将其填充到用户界面上 这是我用来下载该图像并将其保存到设备外部存储器的代码 File firstDirectory new File Environment getExternalStorageDirectory