Android_文件下载
来源:互联网 发布:我太孤独 知乎 编辑:程序博客网 时间:2024/05/17 14:15
一、 使用HTTP协议下载文件
1、文件下载步骤
1)、创建一个HttpURLConnection对象
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
2)、获得一个InputStream对象
urlConn.getInputStream();
3)、访问网络的权限
<uses-permission android:name="android.permission.INTERNET" />
二、将下载的文件写入SDCard
1、得到当前SDCard卡的目录
Environment.getExternalStorageDirectory()
2、访问SDCard卡的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
程序:
public class DownLoadActivity extends Activity {private Button downloadFileBtn,downloadmp3Btn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); downloadFileBtn = (Button) findViewById(R.id.downloadfile); downloadmp3Btn = (Button) findViewById(R.id.downloadmp3); downloadFileBtn.setText("下载 文件"); downloadmp3Btn.setText("下载MP3"); downloadFileBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {HttpDownLoader httpDownLoader = new HttpDownLoader();String txt = httpDownLoader.downLoad("http://127.0.0.1:8080/st/myTest.txt");System.out.println(txt);}}); downloadmp3Btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {HttpDownLoader httpDownLoader = new HttpDownLoader();int downlaodResult = httpDownLoader.downLoadFile("http://127.0.0.1:8080/st/music1.mp3", "TaylorSwift/", "lovestory.mp3");System.out.println(downlaodResult);}}); }}
以下是两个帮助类
public class FileUtils {//得到当前外部存储设备的目录,得到的目录名/SDCARDprivate String SDPATH;public String getSDPATH() {return SDPATH;}public FileUtils(){SDPATH = Environment.getExternalStorageDirectory() + "/";}//在SDCard上创建文件public File createSDFile(String fileName) throws IOException{File file = new File(SDPATH + fileName);file.createNewFile();return file;}//在SDCard上创建目录public File createSDDir(String dirName){File dir = new File(SDPATH + dirName);dir.mkdir();return dir;}//判断SDCard上的文件是否存在public boolean isFileExist(String fileName){File file = new File(SDPATH + fileName);return file.exists();}//将一个InputStream里面的数据写入到SDCard卡中public File write2SDFromInput(String path,String fileName,InputStream input){File file = null;OutputStream output = null;try {createSDDir(path);file = createSDFile(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 e2) {e2.printStackTrace();}}return file;}}
public class HttpDownLoader {private URL url = null;/** * 根据URL下载文件,前提是这个文件的内容是文本,函数的返回值就是文件的内容 * @param urlStr * @return */public String downLoad(String urlStr){StringBuffer stringBuffer = new StringBuffer();String line = null;BufferedReader buffer = null;try {//创建一个URL对象url = new URL(urlStr);//创建一个Http连接HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();//使用IO流读取数据buffer = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));while((line = buffer.readLine()) != null){stringBuffer.append(line);}} catch (Exception e) {e.printStackTrace();}finally{try {buffer.close();} catch (Exception e2) {e2.printStackTrace();}}System.out.println(stringBuffer.toString());return stringBuffer.toString();}//该函数返回整形 -1:代表出错 0:代表成功 1:代表文件已经存在public int downLoadFile(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 e2) {e2.printStackTrace();}}return 0;}//根据URL得到一个输入流public InputStream getInputStreamFromUrl(String urlStr) throws IOException{url = new URL(urlStr);HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();InputStream inputStream = urlConn.getInputStream();return inputStream;}}
- Android_文件下载
- android_文件下载
- android_文件下载
- Android_文件存储
- Android_文件操作
- Android_文件读写
- ANDROID_源码下载(Windows下)
- Android_线程_多线程下载
- 2014年880个合集Android_实例子源代码文件下载地址合集-2014
- Android_布局文件的名称
- Android_本地上传照片文件
- android_应用程序的文件结构
- Android_开发环境搭建之软件下载
- Android_利用URL实现下载功能
- Android_开源项目_XUtils_断点下载
- Android_遍历SD卡所有文件
- 从头学android_创建xml文件
- Android_项目文件结构目录分析
- Linux内核学习笔记:SMP、UMA、NUMA
- 读取excel
- java 面试题详解(转自传智播客张孝祥老师)
- myeclipse10 激活
- Linux 内存泄露调试工具
- Android_文件下载
- C++函数调用原理
- .NET安全系列之四:.NET中加密算法及证书
- Objective-C实现单例模式
- 【转】sshd_config 中文手册
- QtCreator中加入cppcheck静态代码检查工具
- JSON-lib框架,转换JSON、XML不再困难
- 多项式时间算法
- How to compile and debug VLC player source code in eclipse IDE on Ubuntu 10.04 (lucid)?