Android文件下载
public class FileDownloadUtils {private String sdPath;public FileDownloadUtils() {sdPath = Environment.getExternalStorageState() + "/";}/*** 在SD卡上创建文件** @param fileName* @return* @throws IOException*/public File createSDFile(String fileName) throws IOException {File file = new File(sdPath + fileName);file.createNewFile();return file;}/*** 在SD卡上创建目录** @param dirName* @return*/public File createSDDir(String dirName) {File dir = new File(sdPath + dirName);dir.mkdirs();return dir;}/*** 判断SD卡上的文件夹是否存在** @param fileName* @return*/public boolean isFileExist(String fileName) {File file = new File(sdPath + fileName);return file.exists();}/*** 将一个InputStream里面的数据写入到SD卡中** @param path* @param fileName* @param inputStream* @return*/public File write2SDFromInput(String path, String fileName, InputStream inputStream) {File file = null;OutputStream outputStream = null;try {createSDDir(path);file = createSDFile(path + fileName);outputStream = new FileOutputStream(file);byte[] buffer = new byte[4 * 1024];while ((inputStream.read(buffer)) != -1) {outputStream.write(buffer);}outputStream.flush();} catch (Exception e) {e.printStackTrace();} finally {try {outputStream.close();} catch (Exception e) {e.printStackTrace();}}return file;}public String getSdPath() {return sdPath;}public void setSdPath(String sdPath) {this.sdPath = sdPath;}
}
public class HttpDownloader {URL url = null;public String download(String urlStr) {StringBuilder sb = new StringBuilder();String line = null;BufferedReader br = null;try {url = new URL(urlStr);HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();br = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));while ((line = br.readLine()) != null) {sb.append(line);}} catch (Exception e) {e.printStackTrace();} finally {try {br.close();} catch (Exception e) {e.printStackTrace();}}return sb.toString();}/*** 该函数返回整形 -1:代表下载文件出错 0:代表下载文件成功 1:代表文件已经存在** @param urlStr* @param path* @param fileName* @return*/public int downFile(String urlStr, String path, String fileName) {InputStream inputStream = null;try {FileDownloadUtils fileDownloadUtils = new FileDownloadUtils();if (fileDownloadUtils.isFileExist(path + fileName)) {return 1;} else {inputStream = getInputStreamFromUrl(urlStr);File resultFile = fileDownloadUtils.write2SDFromInput(path, fileName, inputStream);if (resultFile == null) {return -1;}}} catch (Exception e) {e.printStackTrace();} finally {try {inputStream.close();} catch (Exception e) {e.printStackTrace();}}return 0;}/*** 根据URL得到输入流** @param urlStr* @return* @throws MalformedURLException* @throws IOException*/public InputStream getInputStreamFromUrl(String urlStr) throws MalformedURLException, IOException {url = new URL(urlStr);HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();InputStream inputStream = httpURLConnection.getInputStream();return inputStream;}}
在Activity使用:
@Overridepublic void onClick(View v) {DownloadFileThread downloadFileThread = new DownloadFileThread(downloadUrl, FileUtil.getSDCardPath(), "html.zip");downloadFileThread.start();}@SuppressLint("HandlerLeak")private final Handler mHandler = new Handler() {@Overridepublic void handleMessage(@NonNull Message msg) {if (msg.what == -1) {Toast.makeText(FileOperateActivity.this, "下载文件出错", Toast.LENGTH_SHORT).show();Log.e(TAG, "下载文件出错");} else if (msg.what == 0) {Toast.makeText(FileOperateActivity.this, "下载文件成功", Toast.LENGTH_SHORT).show();Log.e(TAG, "下载文件成功");} else if (msg.what == 1) {Toast.makeText(FileOperateActivity.this, "代表文件已经存在", Toast.LENGTH_SHORT).show();Log.e(TAG, "代表文件已经存在");}}};class DownloadFileThread extends Thread {private final String download_file_url;private final String download_file_path;private final String download_file_fileName;public DownloadFileThread(String download_file_url, String download_file_path, String download_file_fileName) {this.download_file_url = download_file_url;this.download_file_path = download_file_path;this.download_file_fileName = download_file_fileName;}@Overridepublic void run() {HttpDownloader httpDownloader = new HttpDownloader();int result = httpDownloader.downFile(download_file_url, download_file_path, download_file_fileName);Message message = new Message();message.what = result;mHandler.sendMessage(message);}}
Android文件下载相关推荐
- Android 文件下载,根据url获取真正的文件名和后缀名(包括重定向的url)
Android文件下载时,有时候我们需要根据url拿到要下载文件的名字和后缀. url分两种, 一种是静态url:即url后面就是文件名,例如:https://qd.myapp.com/myapp/q ...
- android 下载进度条代码实现,Android 文件下载进度条的实现
Android 中很多地方都需要用到线程下载.下面我谢了个简单的下载图片的demo.望对你们有到帮助. 首先,配置权限, 在 AndroidManifest.xml里面的application节点下面 ...
- android文件下载功能实现,Android中DownloadManager实现文件下载实例详解
Android中DownloadManager实现文件下载 下载 创建下载链接 DownloadManager.Request request = new DownloadManager.Reques ...
- android程序内下载文件,android文件下载代码 android程序 里如何编写下载代码
android开发文件下载在手机报错 package cc.download; import android.app.Activity;import android.os我比任何人都懂你不会真的陪我到 ...
- android 下载进度条代码实现,Android文件下载进度条的实现代码
搜索热词 main.xml: android:orientation="vertical" android:layout_width="fill_parent" ...
- android文件下载自动安装或打开
最近做了几个项目,花点时间沉淀一下学到的知识. 多线程下载文件及UI刷新 断点续传下载文件网上的文章很多,在这里就不过多叙述了,在android里面控制UI的变化就比较麻烦了,用户在按下home键离开 ...
- Android文件下载——多线程下载
Android文件多线程下载(二)中为了使调用更加简单,做了一个简单的封装.可以直接拷贝代码. 文章目录 1. 相关逻辑 1.1 HTTP首部信息 1.2 RandomAccessFile 1.3 编 ...
- android文件下载器(轻量级)——EasyFileDownload
EasyFileDownloader 一个用于android中的轻量级文件下载器,特别适合应用内升级下载APK. A lightweight for use in the android file d ...
- Android 文件下载的三种基本方式
1. 自己封装URLConnection 连接请求类 这种方式在Android 刚兴起的时候,很少下载封装框架,就自己封装了.虽然一般的文件都能下载,但这种方式缺点很多,不稳定或者各种各样的问题会出现 ...
- android文件下载含服务器端,制作http/https文件共享服务器的Android下载管理器
我正在使用下载管理器的Android方下载来自不同来源的文件.现在我应该为这个应用程序创建一个服务器端.制作http/https文件共享服务器的Android下载管理器 的一切都在这里首先是为Andr ...
最新文章
- 简单几步解决企业USB端口隐患
- Eclipse搭建SpringCloud+SSM+Maven项目
- android 继承ListView实现滑动删除功能.
- Equals 和 == 的区别
- python list保存至csv文件
- 将 Java 作为入门编程语言有错吗?
- @程序员,你的技术过气了吗?
- C语言三位数的整数立方和,c语言求一个三位数正整数n各个数位上数据的立方和...
- 黑马程序员-随笔-我与程序员
- 算法的时间复杂度和空间复杂度-总结
- Exclusively Dark (ExDark) Image Dataset 数据集下载
- 1.松翰单片机:IO口配置
- 运维审计系统----堡垒机的部署
- opencv3_java 图像的修剪裁剪Trimming Rect
- luogu 2411 白银莲花池 luogu 1606 Lilypad Pond
- C/C++函数调用约定(基于X86架构下)
- 贪吃蛇之一维数组实现
- 计算器算贝塞尔公式_绝版应用!超级好用的计算器!
- CSI笔记【8】:基于MUSIC Algorithm的DoA/AoA估计以及MATLAB实现
- linux下微妙级别定时实现