zoukankan      html  css  js  c++  java
  • 【android】下载文件至本应用程序的file目录或者sdcard

    一、判断是否有sdcard卡

    //判断是否有SD卡
    //ture:有SD卡
    //false:没有SD卡
    public boolean avaiableMedia(){
        String status=Environment.getExternalStorageState();
        	
        if(status.equals(Environment.MEDIA_MOUNTED)){
        	return true;
        }
        else {
        	return false;
        }
    }

    二、下载文件至sdcard卡

    if(avaiableMedia()){
    	HttpClient client = new DefaultHttpClient();
    	HttpGet get = new HttpGet(url);
    	HttpResponse response;
    	try {
    		response = client.execute(get);
    		HttpEntity entity = response.getEntity();
    		long length = entity.getContentLength();
    		InputStream is = entity.getContent();
    		FileOutputStream fileOutputStream = null;
    		if (is != null) {
    			File file = new File(Environment.getExternalStorageDirectory(),"test.apk");				    		fileOutputStream = new FileOutputStream(file);
    							
    			byte[] buf = new byte[1024];
    			int ch = -1;
    			int count = 0;
    			while ((ch = is.read(buf)) != -1) {
    				fileOutputStream.write(buf, 0, ch);
    				count += ch;
    			}
    	
    		}
    		fileOutputStream.flush();
    		if (fileOutputStream != null) {
    			fileOutputStream.close();
    		}
    		if (is != null) {
    		   	is.close();
    		}  
    	} catch (ClientProtocolException e) {
    		e.printStackTrace();
    	} catch (IOException e) {
    		e.printStackTrace();
    	}
    }

    三、下载文件至本应用程序的数据文件夹

    Context 提供了FileOutputStream openFileOutput(String name,int mode)来将数据写入到本应用程序的数据文件(在应用程序下的file目录,一般/data/data/…(应用程序包名)/file)夹。

    else{
    	try {
    	FileOutputStream outStream = this.openFileOutput("test.apk" , Context.MODE_WORLD_READABLE);
    				  
    	HttpClient client = new DefaultHttpClient();
        	HttpGet get = new HttpGet(url);
        	HttpResponse response;
        				 
        	response = client.execute(get);
        	HttpEntity entity = response.getEntity();
        	long length = entity.getContentLength();
        	InputStream is = entity.getContent();
        	int count = 0;
        	if (is != null) {
        		byte[] buf = new byte[1024];
        		int ch = -1;
        		
        		while ((ch = is.read(buf)) >0) {
        			outStream.write(buf,0,ch);
        			count += ch;
        			Toast.makeText(getApplicationContext(),"正在下载升级包...",Toast.LENGTH_SHORT).show();
    		}
    	}
        			
        	outStream.flush();
        	if (outStream != null) {
        		outStream.close();
        	}
        	if (is != null) {
        		is.close();
        	} 
    } catch (ClientProtocolException e) {
    	e.printStackTrace();
    } catch (IOException e) {
    	e.printStackTrace();
    }
    }
  • 相关阅读:
    【BZOJ3995】[SDOI2015]道路修建 线段树区间合并
    [Noip2016]天天爱跑步 LCA+DFS
    【BZOJ2870】最长道路tree 点分治+树状数组
    【BZOJ3730】震波 动态树分治+线段树
    【BZOJ2969】矩形粉刷 概率+容斥
    【BZOJ3029】守卫者的挑战 概率+背包
    【BZOJ3043】IncDec Sequence 乱搞
    【BZOJ3124】[Sdoi2013]直径 树形DP(不用结论)
    Django学习笔记之ORM多表操作
    SQL学习笔记之项目中常用的19条MySQL优化
  • 原文地址:https://www.cnblogs.com/Amandaliu/p/2149001.html
Copyright © 2011-2022 走看看