android中文件简单下载

在java中对于文件的下载,最基本的就是对于流的操作。当然在android中也是如此。为了进行文件的下载,构建一个简单的web项目,利用tomcat作为服务器。

 

 

这是web项目的目录结构,主要就是对1.txt文件的下载实现。

 

对于主界面只是简单提供了两个按键。

 

 

当点击FileLoadMp3时,会自动下载1.txt文件到指定目录。查看按键的click事件:

@Override
		public void onClick(View v) {
			HttpDownload downLoad=new HttpDownload();
			FileUtils fileUtils=new FileUtils();
			String urls="http://1xx.1x.1xx.2xx:8080/RegisterUser/1.txt";
			try {
				fileUtils.write2SDFormInput("lo","1.txt", downLoad.getInputStreamFromUrl(urls));
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}

 

可以看到在响应事件中,有两个新的类,一个是HttpDownload,一个是FileUtils。对于第一个类,主要是利用他的一个方法即getInputStreamFromUrl,利用传入的url得到目标对象的输入流。

而FIleUtils则是在得到输入流的基本上,将其构造成文件,并写回到sdcard中去。

public InputStream getInputStreamFromUrl(String urls) throws IOException {
		URL url = new URL(urls);
		HttpURLConnection urlcon = (HttpURLConnection) url.openConnection();
		return urlcon.getInputStream();
	}

很简单,利用URL可以很方便的得到对应的输入流。关键是对于异常的一些处理。从而可以增加用户体验。

 

public File write2SDFormInput(String path,String filename,InputStream input){
		File file=null;
		FileOutputStream fos=null;
		createSDDir(path);
		file=createFileInSDCard(filename, path);
		System.out.println("FileName="+file.getName());
		try {
			fos=new FileOutputStream(file);
			byte buffer[]=new byte[4*1024];
			int temp=0;
			while((temp=input.read(buffer))!=-1){
				fos.write(buffer, 0, temp);
			}
			fos.flush();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		finally{
			try {
				fos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}return file;
		
	}

以上方法即是将流写入到文件中去,path为路径,filename为文件名,input为输入流。

为了得到sdcard的根目录,可以采用

 

 

 


SDCardRoot=Environment.getExternalStorageDirectory().getAbsolutePath()+"/"; 

这条语句得到。如在我手机则得到/storage/sdcard0/

 

public File createFileInSDCard(String filename,String dir){
		File temp=new File(SDCardRoot+dir+File.separator+filename);
		try {
			System.out.println("createFileInSDCard---"+temp);
			temp.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return temp;
	}
	public File createSDDir(String dir){
		File temp=new File(SDCardRoot+dir+File.separator);
//		System.out.println(temp.mkdirs());
		temp.mkdirs();
		return temp;
	}


创建目录,和文件,以供写入输入流。

最终下载成功。

 

程序还有诸多不完善的地方,比如文件名是以参数得到的,而不是程序自动获取。留给读者自己完善吧。

 

 

 

 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值