博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件下载
阅读量:5145 次
发布时间:2019-06-13

本文共 5631 字,大约阅读时间需要 18 分钟。

文件下载步骤:

·创建一个HttpURLConnection对象HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();

·获得一个InputStream对象urlConn.getInputStream()

·访问网络的权限android.permission.INTERNET

访问SDCARD:

得到当前设备的SD卡目录:

Environment.getExternalStorageDirectory()

访问SD卡的权限:

android.permissin.WRITE_EXTERNAL_STORAGE

Manifest文件中需要添加:

main.xml:

 FileUtils.java:

package mars.utils;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import android.os.Environment;public class FileUtils {	private String SDPATH;	public String getSDPATH() {		return SDPATH;	}	public FileUtils() {		//得到当前外部存储设备的目录		// /SDCARD		SDPATH = Environment.getExternalStorageDirectory() + "/";	}	/**	 * 在SD卡上创建文件	 * 	 * @throws IOException	 */	public File creatSDFile(String fileName) throws IOException {		File file = new File(SDPATH + fileName);		file.createNewFile();		return file;	}		/**	 * 在SD卡上创建目录	 * 	 * @param dirName	 */	public File creatSDDir(String dirName) {		File dir = new File(SDPATH + dirName);		dir.mkdirs();		return dir;	}	/**	 * 判断SD卡上的文件夹是否存在	 */	public boolean isFileExist(String fileName){		File file = new File(SDPATH + fileName);		return file.exists();	}		/**	 * 将一个InputStream里面的数据写入到SD卡中	 */	public File write2SDFromInput(String path,String fileName,InputStream input){		File file = null;		OutputStream output = null;		try{			creatSDDir(path);			file = creatSDFile(path + fileName);			output = new FileOutputStream(file);			byte buffer [] = new byte[4 * 1024];			while((input.read(buffer)) != -1){				output.write(buffer);			}			output.flush();		}		catch(Exception e){			e.printStackTrace();		}		finally{			try{				output.close();			}			catch(Exception e){				e.printStackTrace();			}		}		return file;	}}

 HttpDownloader.java:

package mars.utils;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class HttpDownloader {	private URL url = null;	/**	 * 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容	 * 1.创建一个URL对象	 * 2.通过URL对象,创建一个HttpURLConnection对象	 * 3.得到InputStram	 * 4.从InputStream当中读取数据	 * @param urlStr	 * @return	 */	public String download(String urlStr) {		StringBuffer sb = new StringBuffer();		String line = null;		BufferedReader buffer = null;		try {			// 创建一个URL对象			url = new URL(urlStr);			// 创建一个Http连接			HttpURLConnection urlConn = (HttpURLConnection) url					.openConnection();			// 使用IO流读取数据			buffer = new BufferedReader(new InputStreamReader(urlConn					.getInputStream()));     //urlConn.getInputStream得到的是字节流,new InputStreamReader()将它转化为字符流,                                                                  //然后转化为BufferedReader,就可以使用BufferedReader的readLine()方法			while ((line = buffer.readLine()) != null) {				sb.append(line);			}		} catch (Exception e) {			e.printStackTrace();		} finally {			try {				buffer.close();			} catch (Exception e) {				e.printStackTrace();			}		}		return sb.toString();	}	/**	 * 该函数返回整形 -1:代表下载文件出错 0:代表下载文件成功 1:代表文件已经存在	 */	public int downFile(String urlStr, String path, String fileName) {		InputStream inputStream = null;		try {			FileUtils fileUtils = new FileUtils();						if (fileUtils.isFileExist(path + fileName)) {				return 1;			} else {				inputStream = getInputStreamFromUrl(urlStr);				File resultFile = fileUtils.write2SDFromInput(path,fileName, inputStream);				if (resultFile == null) {					return -1;				}			}		} catch (Exception e) {			e.printStackTrace();			return -1;		} finally {			try {				inputStream.close();			} catch (Exception e) {				e.printStackTrace();			}		}		return 0;	}	/**	 * 根据URL得到输入流	 * 	 * @param urlStr	 * @return	 * @throws MalformedURLException	 * @throws IOException	 */	public InputStream getInputStreamFromUrl(String urlStr)			throws MalformedURLException, IOException {		url = new URL(urlStr);		HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();		InputStream inputStream = urlConn.getInputStream();		return inputStream;	}}

 DownLoad.java:

package mars.download;import mars.utils.HttpDownloader;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class Download extends Activity {    /** Called when the activity is first created. */    private Button downloadTxtButton;    private Button downloadMp3Button;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        downloadTxtButton = (Button)findViewById(R.id.downloadTxt);        downloadTxtButton.setOnClickListener(new DownloadTxtListener());        downloadMp3Button = (Button)findViewById(R.id.downloadMp3);        downloadMp3Button.setOnClickListener(new DownloadMp3Listener());    }        class DownloadTxtListener implements OnClickListener{		@Override		public void onClick(View v) {			HttpDownloader httpDownloader = new HttpDownloader();			String lrc = httpDownloader.download("http://192.168.1.107:8080/voa1500/a1.lrc");			System.out.println(lrc);		}    	    }    class DownloadMp3Listener implements OnClickListener{		@Override		public void onClick(View v) {			// TODO Auto-generated method stub			HttpDownloader httpDownloader = new HttpDownloader();			int result = httpDownloader.downFile("http://192.168.1.107:8080/voa1500/a1.mp3", "voa/", "a1.mp3");			System.out.println(result);		}    	    }    }

 

 

转载于:https://www.cnblogs.com/leihupqrst/archive/2013/06/16/3138220.html

你可能感兴趣的文章
安装 Express
查看>>
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
Postman-----如何导入和导出
查看>>
【Linux】ping命令详解
查看>>
Oracle中包的创建
查看>>
关于PHP会话:session和cookie
查看>>
jQuery on(),live(),trigger()
查看>>
treegrid.bootstrap使用说明
查看>>
[Docker]Docker拉取,上传镜像到Harbor仓库
查看>>
导航,头部,CSS基础
查看>>
[USACO 2017 Feb Gold] Tutorial
查看>>
gzip
查看>>
转负二进制(个人模版)
查看>>
LintCode-Backpack
查看>>
查询数据库锁
查看>>
我对于脚本程序的理解——百度轻应用有感
查看>>
面试时被问到的问题
查看>>
当前记录已被另一个用户锁定
查看>>