【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();
}
}
原文地址:https://www.cnblogs.com/Amandaliu/p/2149001.html