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();
    }
    }
  • 相关阅读:
    关于软件设计中遇到的问题
    关于power shell
    如果TChart的发生异常
    重温gof版《设计模式》中的创建型模式
    如何更好的使用cvs
    存储过程返回临时表的问题
    关于bugzilla与svn结合的配置注意事项
    VC知识点:如何用vc6调试CGI程序
    如何让应用程序托盘化
    符号表
  • 原文地址:https://www.cnblogs.com/Amandaliu/p/2149001.html
Copyright © 2011-2022 走看看