如何在Android中以编程方式从网络下载文件?

2023-12-25

在我的应用程序中,从 Web 下载大量文件,这些文件大小约为 200Mb(已压缩)。如何在 Android 中以编程方式下载文件?实际上我关心的是代码的性能。如何处理其间的错误和网络问题?


这是我最近为此编写的一些代码:

    try {
      URL u = new URL("http://your.url/file.zip");
      InputStream is = u.openStream();

      DataInputStream dis = new DataInputStream(is);

      byte[] buffer = new byte[1024];
      int length;

      FileOutputStream fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory() + "/" + "file.zip"));
      while ((length = dis.read(buffer))>0) {
        fos.write(buffer, 0, length);
      }

    } catch (MalformedURLException mue) {
      Log.e("SYNC getUpdate", "malformed url error", mue);
    } catch (IOException ioe) {
      Log.e("SYNC getUpdate", "io error", ioe);
    } catch (SecurityException se) {
      Log.e("SYNC getUpdate", "security error", se);
    }

这将下载文件并将其放在您的 SD 卡上。

您可以修改它以满足您的需要。 :)

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

如何在Android中以编程方式从网络下载文件? 的相关文章

随机推荐

  • 如何从 Groovy 中的对象获取嵌套属性值?

    考虑在 Groovy 中您有类型的情况Company class Company def name def contactPerson and contactPerson of Contact type class Contact def
  • 使用指针访问未对齐的结构成员

    我有以下结构 typedef struct attribute packed uint16 t a uint32 t b st t gt b 成员未对齐 当我执行以下操作时 gcc 会发出警告 st t st uint32 t b p st
  • 如何在 C# 中将自定义 propertyGrid 与标准控件连接?

    我正在创建一个图形程序 我希望允许用户能够更改他们创建的图形的外观 为他们提供更改系列颜色 数据点大小等的机会 我允许他们通过使用 propertyGrid 来做到这一点 然而 在使用 Stack Overflow 的优秀人员的帮助下 我能
  • Javascript 中的经典字数统计算法

    拜托 伙计们 我哪里错了 经典的字数统计算法 给定一个字符串数组 返回一个 Map 每个字符串都有一个键 不同的字符串 其值是该字符串在数组中出现的次数 wordCount a b a c b a 2 b 2 c 1 wordCount c
  • URL 中的奇怪字符

    在我的网络服务器中 当用户请求带有奇怪字符的 URL 时 我会删除这些字符 系统会记录这些情况 当我检查已消毒的箱子时 我发现了这些 我很好奇这些 URL 的目的是什么 我检查了 IP 这些都是真实的人 并且像普通人一样使用网站 但这些人的
  • vim中将制表符替换为空格

    我想在 gVim 中将制表符转换为空格 我将以下行添加到我的 vimrc set tabstop 2 它可以在两个空格处停止 但看起来仍然像插入了一个 tab 键 之后我尝试使用 h 键来计算空格数 我不知道应该怎么做才能让 gVim 将制
  • 在 iOS 上使用 OpenAL 进行声音捕捉

    我正在尝试使用 OpenAL 在 iOS 上进行声音捕获 我正在编写一个跨平台库 这就是为什么我避免使用特定于 iOS 的声音录制方式 开箱即用的 OpenAL 捕获不起作用 但存在一个已知的解决方法 在开始捕获之前打开输出上下文 http
  • 当前上下文中不存在名称“ViewBag” - Visual Studio 2015

    我再次开始使用 ASP NET 进行开发 但在 Visual Studio 中遇到了一个小错误 我的 cshtml 文件在使用一些 razor 函数时显示错误 例如 名称 ViewBag 在当前上下文中不存在 这是一张图片 我正在使用一个演
  • 如何用长文本填充DIV并在溢出时显示省略号

    我有以下 JSFiddle http jsfiddle net ofrj55j4 21 http jsfiddle net ofrj55j4 21 如何在显示省略号之前在 DIV 中显示尽可能多的文本 现在只显示一行 HTML div cl
  • 是否可以在javascript中创建固定长度的数组?

    在Javascript中 是否可以创建一个保证长度保持不变的数组 例如 数组A创建的长度为 2 随后 任何调用的尝试A push or A pop 或设置值A 5 将失败 A length永远是 2 这是输入数组的方式 例如Float32A
  • 选择列表框中的项目后打开新表单

    我的表单上有一个列表框和一个按钮 列表框包含 3 个元素 房屋 人物 户外 我还创建了 3 个表单来表示列表框中的值 我希望用户突出显示列表框中的项目 单击按钮后我想打开用户选择的表单 我怎样才能实现这个目标 我已经尝试过这个链接 通过单击
  • groovy 脚本中提供的名称无效(机制级别:KrbException:无法找到默认领域)

    我有一个连接到 MSSQL 数据库的 groovy 脚本 几周前它工作得很好 但今天我上传了 mac os 的最后一个版本 我的脚本给了我这个例外 Caught java sql SQLException I O Error GSS Fai
  • d3.js:强制布局中建议的节点位置

    我想创建一个图表 其中节点具有建议的位置 但我也想使用力布局来确保节点本身不重叠 这在d3中可能吗 是的 您可以通过以下方式执行此操作 禁用默认的重力和电荷力 实施碰撞检测 http mbostock github com d3 talk
  • Dockerhub 的访问令牌

    我创建了一个存储库hub docker com现在想要使用我的凭据将我的映像推送到 Dockerhub 我想知道是否必须使用我的用户名和密码 或者是否可以创建某种访问令牌来推送 docker 映像 我想做的是使用docker image来自
  • 如何找到 php_smart_string.h 而不是 php_smart_str.h?

    It s me tmp pear install inclued 0 1 3 make bin bash tmp pear install inclued 0 1 3 libtool mode compile cc I I tmp pear
  • 创建 DLL 以在两个进程之间共享内存

    我需要使用 DLL 来实现类似于 Linux 共享内存的功能 我的Windows编程经验很少 但我认为有可能实现我的目标 我想要类似下面的东西 DLL int x void write int temp x temp int read re
  • Webpack 错误:请手动安装 sqlite3 包

    我正在使用 Electron 和 Sequelize 构建一个应用程序 我开始配置数据库 然后 我收到此错误 未捕获的错误 请手动安装 sqlite3 包 在新的 ConnectionManager home matheusdrdj Doc
  • 快速递增 Int!不工作

    我理解选项是如何工作的 但这让我陷入了困境 我有一个变量叫做num我想增加它 所以我做了以下操作 var num Int 0 num ERROR Unary operator cannot be applied to an operand
  • 如何在 Playground 中运行异步回调

    许多 Cocoa 和 CocoaTouch 方法都具有在 Objective C 中作为块实现的完成回调以及在 Swift 中作为闭包实现的回调 然而 当在 Playground 中尝试这些时 永远不会调用完成 例如 Playground
  • 如何在Android中以编程方式从网络下载文件?

    在我的应用程序中 从 Web 下载大量文件 这些文件大小约为 200Mb 已压缩 如何在 Android 中以编程方式下载文件 实际上我关心的是代码的性能 如何处理其间的错误和网络问题 这是我最近为此编写的一些代码 try URL u ne