• 【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();
    }
    }
  • 相关阅读:
    ASSIC码对照表
    IIS注册 net环境
    Remoting1
    WinCE API
    【可下载】C#中关于zip压缩解压帮助类的封装
    【原创,提供下载】winfrom 打印表格,字符串的封装
    一个可编辑div中粘贴内容时过滤掉粘贴内容的一些特殊的样式或者标签
    限制一个文本框只能输入数字以及限制最大只能输入的数字
    文本框中有默认的文字,写获取焦点和失去焦点的文字显示与消失的效果
    鼠标滑过图片变大,移开还原大小的动画效果
  • 原文地址:https://www.cnblogs.com/Amandaliu/p/2149001.html
Copyright © 2020-2023  润新知