Android之文件下载

如何在安卓手机/平板上找到下载文件? 在我们的安卓设备上下载文件的便利性已经成为我们日常生活的一部分。无论是获取最新的应用程序更新、保存重要文档,还是下载多媒体内容,快速访问这些下载文件至关重要。然而,在众多应用程序和设置中,许多人常常会问:“”或“在安卓上哪里可以找到下载文件?”在本文中,我们将汇总五种有效的方法,帮助您在安卓设备上找到下载的文件。无论您使用的是三星Galaxy、谷歌Pixel还是其他任何安卓设备,这些方法都将使您能够轻松访问下载文件,无需技术难题。 阅读详情

在手机上下载一些文件是很常见的,比如下载一本书,下载一首Mp3等等,下面就来通过一个实例来简单介绍一下文件的下载。

文件下载实现的基本步骤:创建一个HttpURLConnection对象,获得一个InputStream对象,设置网络访问权限。

在这个实例中实现歌词和歌曲MP3的下载。

首先我们先看一下布局文件,很简单,只有两个Button控件:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <Button   
  8.         android:id="@+id/downloadText"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:text="downloadText"/>  
  12.     <Button   
  13.         android:id="@+id/downloadMp3"  
  14.         android:layout_width="fill_parent"  
  15.         android:layout_height="wrap_content"  
  16.         android:text="downloadMp3"/>  
  17.       
  18. </LinearLayout>  

下载文件需要用到两个utils工具类,一个工具类(HttpDownloader.java)是用来下载文件用的,另一个(FileUtils.java)是用来将下载的文件写入到SD卡中:

/Download/src/cn/android/sword/utils/HttpDownloader.java

  1. package cn.android.sword.utils;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.File;  
  5. import java.io.IOException;  
  6. import java.io.InputStream;  
  7. import java.io.InputStreamReader;  
  8. import java.net.HttpURLConnection;  
  9. import java.net.MalformedURLException;  
  10. import java.net.URL;  
  11.   
  12. import android.util.Log;  
  13.   
  14. public class HttpDownloader {  
  15.     private final static String SWORD="SWORD";  
  16.     public String download(String urlStr){  
  17.   
  18.         URL url = null;  
  19.         StringBuffer sb = new StringBuffer();  
  20.         String line = null;  
  21.         BufferedReader buffer = null;  
  22.           
  23.         try {  
  24.             //创建一个URL对象  
  25.             url = new URL(urlStr);  
  26.               
  27.             //创建一个Http连接  
  28.             HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();  
  29.               
  30.             //使用IO流读取数据  
  31.             buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));  
  32.               
  33.             while((line=buffer.readLine())!=null){  
  34.                 sb.append(line);  
  35.             }  
  36.               
  37.         }catch (Exception e) {  
  38.             e.printStackTrace();  
  39.         }finally{  
  40.             try {  
  41.                 buffer.close();  
  42.             } catch (IOException e) {  
  43.                 e.printStackTrace();  
  44.             }  
  45.         }  
  46.         return sb.toString();  
  47.     }  
  48.     //返回-1下载文件失败,返回0下载成功,返回1则是文件已存在  
  49.     public int downFile(String urlStr,String path,String fileName){  
  50.         InputStream inputStream = null;  
  51.           
  52.         FileUtils fileUtils = new FileUtils();  
  53.         if(fileUtils.isFileExist(fileName)){  
  54.             return 1;  
  55.         }else{  
  56.             try {  
  57.                 inputStream = getInputSteamFromUrl(urlStr);  
  58.             } catch (IOException e) {  
  59.                 e.printStackTrace();  
  60.                 return -1;  
  61.             }  
  62.             File resultFile = fileUtils.write2SDFromInput(path, fileName, inputStream);  
  63.             if(resultFile == null){  
  64.                 return -1;  
  65.             }  
  66.         }  
  67.         try {  
  68.             inputStream.close();  
  69.         } catch (IOException e) {  
  70.             e.printStackTrace();  
  71.         }  
  72.         return 0;  
  73.     }  
  74.   
  75.     private InputStream getInputSteamFromUrl(String urlStr) throws MalformedURLException, IOException {  
  76.         URL url = null;  
  77.         url = new URL(urlStr);  
  78.         HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();  
  79.         InputStream inputStream = urlConn.getInputStream();  
  80.         return inputStream;  
  81.     }  
  82. }  


/Download/src/cn/android/sword/utils/FileUtils.java

  1. package cn.android.sword.utils;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.InputStream;  
  7. import java.io.OutputStream;  
  8.   
  9. import android.os.Environment;  
  10.   
  11. public class FileUtils {  
  12.     private String SDPATH;  
  13.       
  14.     public String getSDPATH(){  
  15.         return SDPATH;  
  16.     }  
  17.     public FileUtils(){  
  18.         //得到当前外部存储设备的目录  
  19.         // /SDCARD  
  20.         SDPATH = Environment.getExternalStorageDirectory()+"/";  
  21.     }  
  22.       
  23.     /*  
  24.      * 在SD卡上创建文件  
  25.      */  
  26.     public File createSDFile(String fileName) throws IOException{  
  27.         File file = new File(SDPATH+fileName);  
  28.         file.createNewFile();  
  29.         return file;  
  30.     }  
  31.       
  32.     /*  
  33.      * 在SD卡上创建目录  
  34.      */  
  35.       
  36.     public File createSDDir(String dirName){  
  37.         File dir = new File(SDPATH+dirName);  
  38.         dir.mkdir();  
  39.         return dir;  
  40.     }  
  41.       
  42.     /*  
  43.      * 判断SD卡上的文件夹是否存在  
  44.      */  
  45.     public boolean isFileExist(String fileName){  
  46.         File file = new File(SDPATH+fileName);  
  47.         return file.exists();  
  48.     }  
  49.       
  50.     /*  
  51.      * 将一个InputStream里面的数据写入到SD卡中  
  52.      */  
  53.       
  54.     public File write2SDFromInput(String path,String fileName,InputStream input){  
  55.         File file = null;  
  56.         OutputStream output = null;  
  57.         try {  
  58.             //创建目录  
  59.             createSDDir(path);  
  60.             //创建文件  
  61.             file = createSDFile(path+fileName);  
  62.             //创建输出流  
  63.             output = new FileOutputStream(file);  
  64.             //创建缓冲区  
  65.             byte buffer[] =  new byte[4*1024];  
  66.             //写入数据  
  67.             while((input.read(buffer))!=-1){  
  68.                 output.write(buffer);  
  69.             }  
  70.             //清空缓存  
  71.             output.flush();  
  72.         } catch (IOException e) {  
  73.             e.printStackTrace();  
  74.         }finally{  
  75.             try {  
  76.                 //关闭输出流  
  77.                 output.close();  
  78.             } catch (IOException e) {  
  79.                 e.printStackTrace();  
  80.             }  
  81.         }  
  82.         return file;  
  83.     }  
  84.       
  85. }  
在Activity中:
/Download/src/cn/android/sword/download/DownloadActivity.java
  1. package cn.android.sword.download;  
  2.   
  3. import cn.android.sword.utils.HttpDownloader;  
  4. import android.app.Activity;  
  5. import android.os.Bundle;  
  6. import android.util.Log;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.Button;  
  10.   
  11.     /*  
  12.      文件下载的步骤:  
  13.     1:创建一个Ht't'p'URLConnection对象:HttpURLConnection urlConn = (HttpURLConnection)url.o'penConnection;  
  14.     2:获得一个InputStream对象:urlConn.getInputStream();  
  15.     3:设置网络访问权限:android.permissior.INTERNET;  
  16.       
  17.     访问SD卡步骤:  
  18.     得到当前设备SD卡的目录;  
  19.     Environment.getExternalStorageDirectory();  
  20.     访问SD卡的权限:  
  21.     android:permission.WRITE_EXTERNAL_STORAGE  
  22.      */  
  23.   
  24. public class DownloadActivity extends Activity implements OnClickListener{  
  25.     private final static String SWORD="SWORD";   
  26.     //声明两个按钮控件  
  27.     Button downloadText;  
  28.     Button downloadMp3;  
  29.     public void onCreate(Bundle savedInstanceState) {  
  30.         super.onCreate(savedInstanceState);  
  31.         setContentView(R.layout.main);  
  32.         findViews();  
  33.     }  
  34.     //根据Id得到控件  
  35.     private void findViews() {  
  36.         downloadText = (Button) this.findViewById(R.id.downloadText);  
  37.         downloadMp3 = (Button) this.findViewById(R.id.downloadMp3);  
  38.         //添加监听事件  
  39.         downloadText.setOnClickListener(this);  
  40.         downloadMp3.setOnClickListener(this);  
  41.     }  
  42.     @Override  
  43.     public void onClick(View v) {  
  44.         switch(v.getId()){  
  45.         case R.id.downloadText:  
  46.             HttpDownloader httpDownloader = new HttpDownloader();  
  47.             //所要下载文件的url路径  
  48.             String lrc = httpDownloader.download("http://192.168.1.101:8080/20111021/a.lrc");  
  49.             //日志打印输出  
  50.             Log.i(SWORD,""+lrc);  
  51.             break;  
  52.         case R.id.downloadMp3:  
  53.             HttpDownloader httpDownloader1 = new HttpDownloader();  
  54.             int result = httpDownloader1.downFile("http://192.168.1.101:8080/20111021/m.mp3","dir/","new.mp3");  
  55.             Log.i(SWORD,""+result);  
  56.             break;  
  57.         default:  
  58.             Log.i(SWORD,"ERROR");  
  59.             break;  
  60.         }  
  61.     }  
  62. }  

本例子所下载的歌词文件和MP3文件均为我的pc上的tomcat中项目下的文件,所以需要启动我的tomcat service服务,在虚拟机上运行:


点击downloadText,查看控制台日志输出:

可以看到乱码的文件内容,然后点击downloadMp3,在SD卡的dir目录下我们能看到一个new.mp3的文件,这说明我们的文件下载成功了。


[Android]安卓上传下载文件 主要是参考资料1 的源码。 相关资料1 里面的文件解压到安卓项目 的android library的libs文件夹内,并添加依赖 JAVA上传 public void upload(String fileName) { String filePath = RecorderUtils.getInstance().mFilePath+fileName+RecorderUtils.fileName; FileUploadConfiguration fi... 阅读详情

相关推荐

Android中文件读写(输入流和输出流)操作小结

1. Android中文件读写的原理: (1).所有文件的储存都是字节的储存。 (2).在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。 (3).在读取文件(特别是文本文件)时,也是一个字节一个字节的读取以形成字节序列。 2. 字节流和字符流的区别: (1).字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,字符流就可以。 (2).字节流转换成字符流可以用InputStreamReader,OutputStreamWriter。 一般我们在使用的时候通常用字节流。 3. 文件读写的步骤: (1).首先建立通道。 (2).然后建

App设计灵感之十二组精美的手机文件管理App设计案例

手机文件不像电脑一样将文件所在文件夹清楚的展示给我们,所以很多时候在使用手机时候不会很刻意的去考虑文件下载所在的位置。利用文件管理 App 可以帮助我们了解文件种类及位置,做到心中有数。 ① Transfer File Application | Exploration by firman praadita ② Midnight by Vitaly Belousov ③ Files Manager App by Tufayel Khan ④ File Manager by Olha Vdovenko

╰つ栺尖篴夢ゞ 714

LabVIEW新手必看:5分钟搞定S7-1200 OPC通信(附完整配置截图)

本文详细介绍了LabVIEW与西门子S7-1200 PLC通过OPC通信实现工业监控系统的完整配置流程。从环境准备、PLC数据块配置到OPC Server高级设置,逐步指导新手快速建立稳定通信链路,并分享工业级应用的优化技巧和异常处理方案,帮助用户提升自动化系统集成效率。

rl6adventurer的博客 640

关于ios和Android手机的下载pdf文件功能探讨

在Android手机中是调起默认浏览器的下载功能(正常现象,可以实现功能),但是在ios手机中是直接进行文件的有预览.无法下载**,查阅相关资料发现:IOS下载跳转到浏览器的行为是不支持的,**后来修改方案,改成在ios预览,给出提示框进行协议生产地址的复制功能粘贴到浏览器中及逆行保存到手机,在Android手机下载。在工作中遇到了一个需求,在app中需要对一些协议(pdf格式的)进行下载,包括使用babol转成二进制文件流也是一样的,在ios手机中无法下载。

瓜皮伦的博客 1028

高通Camera AWB跳变问题实战:从夕阳场景到参数调优的完整避坑指南

本文深入解析高通Camera AWB跳变问题,特别是在夕阳场景下的色温突变现象。通过分析灰区统计失效、光源混合干扰等成因,提供从参数调优到诊断工具链的完整解决方案,包括动态灰区扩展算法、色温平滑过渡方案及高通平台特定优化技巧,帮助工程师有效解决AWB跳变问题。

sre5engineer的博客 858

Intouch间接变量(扩展)

间接变量只是Intouch提供给开发者的便捷方式之一,并不是所有情况都一定要使用间接变量,有时候用条件语句或者内存变量的方式也能起到类似的作用。

weixin_41571357的博客 2168

Android 文件下载(断点、多任务并行下载)

以下代码是基于百度云网盘:http://pan.baidu.com/s/1dD1Xo8T 中的demo进行优化及功能添加。 以下代码实现功能有:多线程下载、多任务并行下载以及下载进度和下载速度的显示等功能。 实现思路:根据线程数分割待下载文件;利用HttpURLConnection实现各部分文件的下载;利用RandomAccessFile实现下载内容的保存;各线程下载任务信息保存在数据库,以便暂

StoneHui 8374

PMP–一、二、三模–分类–13.干系人管理

A:确认是否已制定沟通管理计划,使业务干系人认识到项目的成功之处。B:让业务干系人参加冲刺回顾会议。C:与发起人和关键干系人一起确定产品待办事项列表中的优先要务,以便交付商业利益。D:为关键干系人开展收尾调研。C。

stqer的博客 1417

安卓学习 Day23:文件流操作

安卓学习第二十三天,文件流操作。

zs18384022951的博客 323

FPGA原型验证(七):如何选择、搭建原型验证平台?

本篇概要::讨论了在项目初期选择目标FPGA平台的重要性,包括自制板卡与购买现成板卡之间的决策。主要是为那些希望建立基于FPGA的原型平台的工程师和设计师提供了深入的技术细节和决策指导,无论是选择自制还是购买现成的解决方案。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 942

【K8S系列】Kubernetes 中 Pod 无法通过 Service 名称访问服务的 DNS 解析失败问题【已解决】

在 Kubernetes 中,Service 提供了一种稳定的方式,通过名称访问一组 Pod。当其他 Pod 无法通过 Service 名称访问服务,并且出现 DNS 解析失败时,通常会导致应用无法正常工作。本文将详细分析此问题的常见原因及其解决方案。

颜淡慕潇 1万+

Android下载流文件

Android下载流文件

Qxnedy的博客 886

DeerFlow 系列教程 第十四篇 | IM 渠道集成——让 DeerFlow 接入飞书、企微、Slack、Telegram

DeerFlow 系列教程 第十四篇本篇教程继续,全面剖析 DeerFlow 的 IM 渠道集成方案。我们将深入理解 Channel 抽象层设计、MessageBus 消息总线机制、ChannelManager 调度循环、四大 IM 平台(飞书、企业微信、Slack、Telegram)的适配实现,以及从 IM 消息到 Agent 响应再到 IM 回复的完整消息流转过程。

weixin_43674738的博客 415

php 安卓下载文件,Android 文件下载(1)

本节引言:又是一个深坑,初学者慎入...本节将从普通的单线程下载 -> 普通多线程下载 ->-> 以及一个很实用的例子:利用Android那只DownloadManager更新apk并覆盖安装的实现代码!好的,这样看上去,本节还是蛮有趣的,开始本节内容!PS:我们把整个完整的多线程断点续传放到下一节中!1.普通单线程下载文件:直接使用URLConnection.openStrea...

weixin_29485887的博客 501

代谢组数据分析(五):代谢组的功能富集分析

本文介绍了代谢组数据分析中的功能分析,包括代谢物富集分析、GSEA和ssGSEA方法。文章详细阐述了分析原理、应用背景、数据准备、统计方法以及结果解释,强调了在代谢通路和代谢物ID对应关系建立、差异代谢物筛选、富集程度计算等方面的关键步骤。通过这些方法,可以揭示差异代谢物在生物过程中的作用,为疾病研究和药物开发提供依据。

专注生信领域 5981

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android安卓根据地址下载文件并保存到本地(HttpDownload)

安卓根据地址下载文件并保存到本地,这里主要是用asyncTask中实现,并实现进度条实时更新。根据下载结果,判断返回3中情况:已下载,失败,成功。此方法下载保证可以保证下载不失真,不会出现下载大小与实际不符的情况,此处只列出AsyncTask的代码,供参考。如有问题,请在评论中指出。class DownloadFileFromURL extends AsyncTask<String, String,

daisuyang518的博客 8398

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

安卓 文件下载

uses-permission android:name="android.permission.INTERNET" />网络访问权限是必须的,下载地址为sdcard的话需要添加sdcard写权限。// 测试文件下载地址(格式为http://..../文件名.文件类型)// 获取链接中最后一个/的下标。// 设置下载时通知显示的标题。

weixin_72426331的博客 593

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android之下载文件

使用场景:用tomcat搭建了一个文件服务器,然后在安卓端去下载文件。 使用技术:使用 HttpURLConnection 建立http连接,并下载 package com.example.facecompare.FaceApi; import android.content.Context; import android.util.Log; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputS

1275

逍遥模拟器拷贝android根目录文件,逍遥安卓模拟器下载的文件在哪里?

逍遥安卓模拟器里面下载的文件都保存在哪里?通过逍遥安卓模拟器下载的文件保存在电脑的哪个文件夹中?如何找到逍遥安卓模拟器里面下载的文件?方法步骤1.逍遥安卓模拟器是一款非常好用的安卓模拟器。能够帮助用户在电脑上运行安卓应用还有游戏,并且支持多开,十分好用,但是有小伙伴会问逍遥安卓模拟器里面保存的文件在哪里,今天小编就来教大家找到这些文件。2.我们下载好逍遥安卓模拟器之后将其打开,在右侧我们会看到逍遥...

weixin_28727943的博客 1万+

Android安卓WebView下载文件问题

webview的下载问题及解决

萌萌的博客 1万+

安卓下载文件

下载文件 1,伙伴们,在这里我是下载的 .zip文件到本地,添加到了 进度条显示,具体代码如下: 2,首先是 布局吧: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" xmlns:tools="http://schemas.android.

mawlAndroid的博客 2147

【Android】安卓 Java下载ZIP文件并解压(笔记)

本篇笔记记录如何在 Android 中通过 Java 下载 ZIP 文件并解压,同时处理下载进度、错误处理以及优化方案。

一个XR(AR|VR|MR)程序猿的博客(EQ-雪梨蛋花汤) 1143

安卓 下载文件

下载文件示例: String Url = "https://raw.githubusercontent.com/scimence/AndroidPlugin/master/apk/AndroidPlugin_plugin1.apk"; String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() +...

暂无内容 1264

安卓文件下载

在网上找了很多资料,但是都存在一定的bug。问题解决后,特写出问题解决方案。 1.使用安卓自带的downloadmanage下载。(推荐,下载后的文件可在手机最近的目录查看) final DownloadManager dManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); Uri uri = Uri.parse(UrlUtils.BASE_URL+"/media/"+list_show.get(position

qq_39107335的博客 1006

Android开发之文件下载

Android作为一个手机操作系统,在Android中访问网络是许多应用程序都必需的功能。用户也经常需要在应用程序中下载所需要的文件比如电子书,MP3格式的音乐文件,电影等。Android文件下载的一般步骤:      1、创建一个HttpURLConnection的对象           URL url=new URL(urlStr);           HtttpURLConnection urlConn=(HtttpURLConnection)url.OpenConnection();     

ITCEOjingying的专栏 9585

android.os.AsyncTask(文件下载)

android.os.AsyncTask <String,Void,Integer> AsyncTask :是可以使用UI线程变得更容易更适当,它可以在后台运行一些操作在UI上展现,不用具体的线程。 包括三种基本类型(调用参数,进度,结果) 四个操作步骤(调用开始,在后台运行,处理进度,结束) 必须作为一个子类使用,它是一个抽象类,实例的AsyncTask只能execute一次,多次则会抛出异常。

扬扬 398
上一篇: 上百个Android开源项目分享
下一篇: Hands-On Lab 设备状态应用程序
funnyfox
博客等级 码龄16年 4粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值