实现了文件的上传,文件的上传其实就是自己组合成Post表单的形式进行Http的Post发送,这一篇要实现的是文件的下载,其实下载文件与打开网页是一样的,打开网页是将内容显示出来,保存文件就是保存到文件中即可。
实现的代码基本如下:
public void downFile(String url, String path, String fileName)
throws IOException {
if (fileName == null || fileName == "")
this.FileName = url.substring(url.lastIndexOf("/") + 1);
else
this.FileName = fileName; // 取得文件名,如果输入新文件名,则使用新文件名
URL Url = new URL(url);
URLConnection conn = Url.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
this.fileSize = conn.getContentLength();// 根据响应获取文件大小
if (this.fileSize <= 0) { // 获取内容长度为0
throw new RuntimeException("无法获知文件大小 ");
}
if (is == null) { // 没有下载流
sendMsg(Down_ERROR);
throw new RuntimeException("无法获取文件");
}
FileOutputStream FOS = new FileOutputStream(path + this.FileName); // 创建写入文件内存流,通过此流向目标写文件
byte buf[] = new byte[1024];
downLoadFilePosition = 0;
int numread;
while ((numread = is.read(buf)) != -1) {
FOS.write(buf, 0, numread);
downLoadFilePosition += numread
}
try {
is.close();
} catch (Exception ex) {
}
}
通过此代码就可以实现将内容保存到SD卡等设备上,当然要使用网络,必须得有网络的访问权限。这个需要自己添加,在这里不再添加!
上面的代码没有实现进度条功能,如果要实现进度条功能,我现在考虑到的就是使用消息进行发送提示,首先实现一个消息。
private Handler downloadHandler = new Handler() { // 用于接收消息,处理进度条
@Override
public void handleMessage(Message msg) { // 接收到的消息,并且对接收到的消息进行处理
if (!Thread.currentThread().isInterrupted()) {
switch (msg.what) {
case DOWN_START:
pb.setMax(fileSize); //设置开始长度
case DOWN_POSITION:
pb.setProgress(downLoadFilePosition); // 设置进度
break;
case DOWN_COMPLETE:
Toast.makeText(DownLoadFileTest.this, "下载完成!", 1).show(); // 完成提示
break;
case Down_ERROR:
String error = msg.getData().getString("下载出错!");
Toast.makeText(DownLoadFileTest.this, error, 1).show();
break;
}
}
super.handleMessage(msg);
}
};
这样,在下载的时候只要发送相应的消息,即可有相应的提示!不再细写
分享到:
相关推荐
这是最简单的下载网络文件的demo,希望对菜鸟有帮助,大神勿喷!
android从网络上下载文件
Android网络通信之文件断点下载事例代码,修改string.xml中net_path属性的值来指定网络资源文件地址
android下载网络pdf文件并展示。代码量非常小,直接粘贴复制需要的代码即可
android 下载网络 world 文件并打开
原数据存放在StreamingAsset中,首次启动复制到persistentDataPath,以后进行更新和读取都在persistentDataPath中使用File进行文件操作。需要恢复书序的时候从StreamingAsset中获取即可。
演示Android下载文件的例子,演示如何从网络下载文件。
简单、方便可以在Activity、Service、Fragment、Dialog、popupWindow、Notification等组件中使用支持任务自动调度,使用者不需要关心任务状态切换的逻辑,通过Aria的事件,能很容易获取当前下载任务的下载状态。
Android中如何获取网络资源(如图片,音乐,视频,文档等)的大小! 较小的一个总结 不过很实用!
Android扫描本地pdf文件和从网络下载pdf文件并打开实现文件的网络下载和打开,PDF依赖便捷好用
一个AndroidHTTP网络传输文件程序,为Android编写,其中的示例说明了如何从网站下载并显示图片及如何上传一个文件。
精通ANDROID网络开发.part1 由于上传限制,此书籍采用分卷压缩,需要与 精通ANDROID网络开发.part2一起才能正常解压使用
Android中的网络数据下载及JSON的操作,包括了9个Android JSON方面操作的例子: GetAPictureFromInternet GetNewsInJSONFromInternet MultipleThreadContinuableDownloader 多线程下载 ServerForJSON ...
《Android多线程断点续传下载网络上的音/视频等各种文件》多线程,断点续传,各种网络上的数据,下载网络上的数据时基本功!加油了各位!
基于android实现下载网络资源,文件、多媒体等,采用多线程,实现了断点续传。
android网络文件上传下载源码,有效果图,和android开发的完整代码,保证跑通
通过地址将pdf下载到手机内存中,然后打开。bug已经修复 已测试,好用。
封装了一个 可以下载网络资源文件的类,实现了将下载的文件存储到SD卡中
网络上常用的断点续传下载代码,适合于大文件的下载。
OKHttp3是如今非常流行的Android网络请求框架,那么如何利用Android实现断点续传呢,今天写了个Demo尝试了一下,感觉还是有点意思 准备阶段 我们会用到OKHttp3来做网络请求,使用RxJava来实现线程的切换,并且开启Java8...