文章目录

  • 1、简介
  • 2、文件结构
  • 3、AndroidMainfest 添加权限
  • 4、MainActivity 实现
  • 5、效果显示

1、简介

下载网络服务器上的文件 或者 图片 两者相似

2、文件结构

3、AndroidMainfest 添加权限

    <uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

4、MainActivity 实现

package com.example.tssh.mydownloadfile;import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Environment;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;public class MainActivity extends AppCompatActivity {private String  TAG = "MainActivity: ";private String  urlLoadPath = "http://dl.kkdownload.com/kz2sem2/KuaiZip_Setup_sem2_604.exe";  //下载的文件 网络地址private String savaDirPath = "testLoad";  //保存的地址@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//先去检查有没有相应权限CheckThread checkThread  = new CheckThread();checkThread.start();try {checkThread.join();} catch (InterruptedException e) {e.printStackTrace();}new Thread(new Runnable() {@Overridepublic void run() {DownLoadFileFormUrl(urlLoadPath,savaDirPath); //调用下载函数}}).start();}public boolean DownLoadFileFormUrl(String urlLoadPath, String savaDirPath){InputStream inputStream = null;FileOutputStream fileOutputStream = null;HttpURLConnection httpURLConnection = null;if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {Log.i(TAG," 未安装 SD 卡");return  false;}File pathSd = Environment.getExternalStorageDirectory();  //获取 SD 卡路径File fileRealDirectoty  = new File(pathSd.getAbsolutePath() + File.separator + savaDirPath);Log.i(TAG,"文件保存的真正目录: " + fileRealDirectoty);if (!fileRealDirectoty.exists()) {  //如果目录 不存在 ,就创建Log.i(TAG,"创建 存储文件夹");fileRealDirectoty.mkdirs();}//获取要下载的文件名称,在这里可以更改下载的文件名String fileName = urlLoadPath.substring(urlLoadPath.lastIndexOf("/") + 1);//String fileName = "test.zip";//创建 这个文件名 命名的 file 对象File file = new File(fileRealDirectoty,fileName);Log.i(TAG,"file: " + file);if (!file.exists()) {  //倘若没有这个文件try {Log.i(TAG,"创建文件");file.createNewFile();  //创建这个文件} catch (IOException e) {e.printStackTrace();}}try {URL url = new URL(urlLoadPath);httpURLConnection = (HttpURLConnection) url.openConnection();httpURLConnection.connect();int code = httpURLConnection.getResponseCode();if (code == 200 ) {//网络连接成功 } else {//网络返回异常}//根据响应获取文件大小int fileSize = httpURLConnection.getContentLength();Log.i(TAG,"文件大小: " + fileSize);inputStream = httpURLConnection.getInputStream();fileOutputStream = new FileOutputStream(file);byte[] b = new byte[1024];int tem = 0;while ((tem = inputStream.read(b))!= -1) {fileOutputStream.write(b,0,tem);}} catch (MalformedURLException e) {e.printStackTrace();return false;} catch (IOException e) {e.printStackTrace();return false;} finally {try {if (inputStream != null) {inputStream.close();}if (fileOutputStream != null) {fileOutputStream.close();}if (httpURLConnection != null) {httpURLConnection.disconnect();}} catch (IOException e) {e.printStackTrace();}}Log.i(TAG,"文件下载 成功");return true;}//sd 卡权限申请private void checkPermission() {if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},100);}}@Overridepublic void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {if(requestCode == 100){if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {Log.d(TAG, "");}}}public  class CheckThread  extends  Thread{public void run() {checkPermission();}}
}

5、效果显示

文件参考:
《Android 典型技术模块开发详解》

本人郑重声明,本博客所编文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。

Android 网络下载文件 图片 httpurl相关推荐

  1. down.php无法打开,php下载文件 图片不能打开,该怎么解决

    php下载文件 图片不能打开 function fileDown($file_name){ $file_name = iconv("utf-8","gb2312" ...

  2. Android Retrofit下载文件进度

    In this tutorial, we'll create an android application which downloads a file from the URL using Retr ...

  3. rtthread + STM32F407VE + esp8266 +SD卡 从网络下载文件存到SD卡中

    学习rtthread,通过文章记录学习过程的一些问题. 手上有一块STM32F407VE的核心板(带sd卡槽,连接MCU的SDIO),和安信可的esp8266-12F模块,现以此为基础实现从网络上下载 ...

  4. Android实现下载文件(图片)显示进度

    这里是做笔记用,不做过多介绍: 1.布局代码:download.xml <?xml version="1.0" encoding="utf-8"?> ...

  5. android网络下载图片并且显示在图库中

    1:网络下载图片 主要是练习网络编程,获取网络数据.不能使用网络资源的软件是很难有长足的发展和进步的,个人觉得,所以最近在学习网络相关的编程.这里就把我做的demo发在这里,同时我也梳理一下知识点.废 ...

  6. Android Service下载文件并自定义通知提示下载

    最近要做一个更新sdk,里面用到了service后台下载,自定义通知提示下载进度,下面直接贴上代码. 下面是UpdateUtils.java ,告诉你如何使用 package com.cnziz.up ...

  7. JAVA从网络下载文件到本地

    1.首推一种方法,封装好的FileUtils,简单一句话就搞定 /*** 下载文件---返回下载后的文件存储路径* * @param url 文件地址* @param dir 存储目录* @param ...

  8. Android 多线程下载文件原理霸气解析介绍 -----文件的下载(3)

    1.首先我们先创建好下载的位置–根据url创建文件. /*** <p>Title: FlieStorageManager</p >* <p>Description: ...

  9. android之下载文件

    使用场景:用tomcat搭建了一个文件服务器,然后在安卓端去下载文件. 使用技术:使用 HttpURLConnection 建立http连接,并下载 package com.example.facec ...

  10. iOS之网络下载文件

    文件下载 文件下载在我们日常开发中经常使用到,比如:图片,音频,视频等 简单的小文件下载 get异步下载 - (void)viewDidLoad {[super viewDidLoad];NSStri ...

最新文章

  1. BigInteger和BigDecimal类
  2. 吴恩达 coursera AI 第二课总结+作业答案
  3. ChipKill内存技术
  4. 在普通java类里获取Spring管理的bean
  5. python中函数的名称可以随意命名吗_函数的名称可以随意命名。(3.0分)_学小易找答案...
  6. SSH: scp 拉取云端文件到本地端
  7. keepalived 单播模式
  8. 阿里云 ECS迁移数据至腾讯云云服务器
  9. uni-app真机调试链接不上网易im服务器
  10. 不稳定就是人生常态,要坚信未来一定会非常美好
  11. Fairplay之 generating FairPlay content key request on iOS after 14.6
  12. Linux的7种文件类型
  13. C#:正经了这么久,来个恶搞吧,大家竟然开始“兽语”交流
  14. Android 多语言支持
  15. AGV小车如何实现无人搬运自动导引代替人工
  16. on update cascade 和on delete cascade 的作用
  17. .dll反编译工具Reflector的使用
  18. 经典论文阅读densenet(Densely Connected Convolutional Networks)
  19. 新闻网站个人中心(个人信息修改)流程分析
  20. kiel调试过程中断点问题

热门文章

  1. Redis实现邮件激活码保存
  2. 英语期刊写作-通往国际学术舞台的阶梯第六章答案
  3. 干掉Dubbo,换下Spring Cloud,这个架构有点厉害!
  4. PLSQL使用for update编辑数据库的坑
  5. 工行u盾显示316_工行网银客户端检测不到U盾的解决方法
  6. Spring Data Jpa使用篇
  7. Unity字体展示下载
  8. Python爬虫爬取一页韩寒新浪博客
  9. 如何减少固定资产浪费?
  10. matlab实现偏微分方程数值解