`

【android开发】下载文件工具类

阅读更多

FileUtils.java 主要用来操作SD卡上的文件夹和文件

package com.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() {
		SDPATH = Environment.getExternalStorageDirectory() + "/";
	}

	/**
	 * 在SD卡上創建文件
	 * @param fileName
	 * @return
	 * @throws IOException
	 */
	public File createSDFile (String fileName) throws IOException {
		File file = new File(SDPATH+fileName);
		if (file.exists()) {
			file.createNewFile();
		}
		return file;
	}
	
	/**
	 * 在SD卡上創建目錄
	 * @param dirName
	 * @return
	 */
	public File createSDDir(String dirName) {
		File dir = new File(SDPATH+dirName);
		if (!dir.isDirectory()) {
			dir.mkdir();
		}
		return dir;
	}
	
	/**
	 * 判斷SD卡上的文件夾是否存在
	 * @param fileName
	 * @return
	 */
	public boolean isFileExist(String fileName) {
		File file = new File(SDPATH+fileName);
		return file.exists();
	}
	
	/**
	 * 将文件下载到SD卡上
	 * @param path
	 * @param fileName
	 * @param input
	 * @return
	 */
	public File writer2SDFromIinput(String path, String fileName,
			InputStream input) {
		File file = null;
		OutputStream output = null;
		try {
			// 创建目录 dir.mkdir(); 
			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 e) {
				e.printStackTrace();
			}
		}
		return file;
	}
}

 httpDownload.java 下载文件

package com.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.URL;

public class HttpDownloader {

	private URL url = null;

	/**
	 * 下载文件
	 * @param urlStr url
	 * @return
	 */
	public String download(String urlStr) {
		StringBuffer sb = new StringBuffer();
		String line = null;
		BufferedReader buffer = null;
		try {
			url = new URL(urlStr);

			HttpURLConnection urlConn = (HttpURLConnection) url
					.openConnection();
			buffer = new BufferedReader(new InputStreamReader(urlConn
					.getInputStream()));
			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();
	}
	
	/**
	 * 
	 * @param urlStr
	 * @param path SD哪个目录上
	 * @param fileName 要存放的文件名
	 * @return
	 */
	public int downFile(String urlStr,String path,String fileName) {
		InputStream in = null;
			FileUtils fu = new FileUtils();
			 if (fu.isFileExist(path+fileName)) {
				return 1;
			}
				try {
					in = getInputStreamFromUrl(urlStr);
					File resultFile = fu.writer2SDFromIinput(path, fileName, in);
					if (resultFile == null) {
						return -1;
					}
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}finally {
					
					try {
						in.close();
					}catch(Exception e) {
						e.printStackTrace();
						return -1;
					}
				}
				return 0;
	}
	
	/**
	 * get stream from url
	 * @param urlStr
	 * @return
	 * @throws IOException
	 */
	public InputStream getInputStreamFromUrl(String urlStr) throws IOException {
		url = new URL(urlStr);
		HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
		InputStream inputStream = urlConn.getInputStream();
		return inputStream;
	}
	
}
分享到:
评论
1 楼 njyu 2011-01-13  
好使不?

相关推荐

    Android开发常用工具类

    在Android开发过程中,工具类(Utility Class)是开发者不可或缺的好帮手。它们通常包含一系列静态方法,用于执行特定任务,如日期时间处理、网络请求、数据解析等,从而提高代码的复用性和效率。以下是一些Android...

    安卓开发框架工具类相关-Android快速开发系列10个常用工具类.rar

    在Android开发中,工具类通常包含一系列静态方法,用于执行常见的、重复的任务,以提高代码的复用性和开发效率。这一压缩包很可能包含了开发者在日常工作中会频繁使用的各种功能模块。 【描述】中提到,这是一个...

    安卓开发框架工具类相关-Android开发的通用工具类.zip

    "安卓开发框架工具类相关-Android开发的通用工具类.zip" 提供了一组可能用于Android应用开发的通用工具类集合。虽然不能保证每个类都能直接运行,但它们可以作为学习和参考的资源,帮助开发者理解常见的功能实现。 ...

    Android代码-下载工具类

    在Android开发中,创建一个下载工具类是相当常见的需求,它可以帮助我们管理应用程序中的文件下载任务,提高代码的可重用性和效率。本篇将详细探讨Android代码中的下载工具类,以及如何构建这样一个实用的工具。 ...

    android开发工具类

    在Android应用开发中,工具类(Utils类)是开发者经常使用的辅助代码集合,它们封装了常见的功能,使得代码更加简洁易读。以下是对给定的压缩包文件中包含的10个工具类的详细说明: 1. **CheckUtils.java**: 这个...

    android 开发常用到的工具类集锦

    在Android开发过程中,工具类是提高开发效率和代码可复用性的重要组成部分。"android 开发常用到的工具类集锦"是一个集合了多种实用功能的开源项目,它包括了网络访问、文件操作、图像处理等多个关键领域的工具类。...

    Android-AndroidStudio快速创建常用工具类的插件

    首先,理解“工具类”在Android开发中的概念至关重要。工具类通常是一些封装了常见功能的静态方法集合,如日期时间处理、网络请求、字符串操作等。它们避免了重复代码,提高了代码复用性,并且使得代码结构更加清晰...

    Android快速开发工具类

    在Android应用开发中,工具类(Utils)是程序员经常使用的组件,它们包含了各种常用功能的静态方法,可以极大地提高开发效率。"Android快速开发工具类"集合了多种实用功能,如图片处理、缓存管理、网络状态检测、...

    android系统DownloadManager下载工具类

    这个工具类允许开发者轻松地集成到自己的应用程序中,以实现文件的下载功能。 **DownloadManager简介** DownloadManager是Android API Level 9( Gingerbread)引入的一个类,位于`android.app.DownloadManager`包...

    android开发各种工具类

    在Android开发过程中,工具类(Utils Class)是开发者经常使用的代码模块,它们包含了各种通用功能,可以帮助我们提高开发效率,减少重复工作。"android开发各种工具类"这个资源集合了作者在开发实践中积累的一些...

    Java-Android工具类

    本资料“Java-Android工具类”显然是一份包含了多种实用工具类的集合,旨在帮助开发者在Java和Android开发过程中节省时间和精力。 首先,我们来探讨一下SD工具类。在Android系统中,外部存储空间(如SD卡)通常用于...

    Android ftp 下载工具类

    在Android开发中,FTP(文件传输协议)常用于在设备与服务器之间进行文件的上传和下载操作。本知识点主要集中在如何使用Java实现一个FTP下载工具类,以便在Android应用程序中集成这一功能。以下是对`DownloadFTPUtil....

    Android断点续传工具类

    在Android开发中,断点续传是一项重要的技术,它允许应用程序在用户暂停、退出或网络中断后,从上次停止的地方继续下载大文件,而无需重新开始。本篇将详细讲解如何构建一个Android断点续传工具类,以及相关的核心...

    Android 开发常用的工具类

    在Android开发过程中,工具类(Utility Classes)是开发者经常使用的代码模块,它们包含了各种通用功能,可以帮助我们提高代码的复用性和效率。以下是一些在Android开发中常见的工具类及其重要知识点: 1. **Log...

    android工具类-外部存储的缓存文件

    接下来,我们来构建一个简单的缓存文件工具类。这个类的主要功能可能包括读取、写入、删除和检查缓存文件的存在。 1. **创建缓存文件** 缓存文件通常用于存储网络请求的结果,以减少网络延迟。我们可以使用`...

    查看android的数据库文件db工具

    在Android开发中,数据库是存储和管理应用程序数据的重要手段,SQLite是Android系统默认使用的轻量级关系型数据库。本文将详细介绍如何使用一个名为SQLiteBrowser的工具来查看Android设备上的数据库文件(db)。 ...

    Dimens文件生成工具/Android平板屏幕适配开发必备

    总的来说,`Dimens`文件和相应的生成工具是Android开发中进行平板适配的重要组成部分,它们帮助开发者有效地解决屏幕尺寸多样化带来的问题,保证应用在不同设备上的用户体验一致性。而`DimensEx`这样的工具则进一步...

    android开发 文件上传下载 源码

    在Android开发中,文件的上传和下载是常见的功能需求,特别是在构建移动应用时,如社交应用、云存储服务等。本资源提供了android开发中的文件上传和下载的源码,可以帮助开发者快速理解和实现这一功能。 一、文件...

    android 常用工具类集合

    在Android开发过程中,工具类集合是非常重要的一部分,它们可以极大地提高开发效率,简化代码,使得开发者能够更加专注于业务逻辑。本篇文章将详细讲解"android常用工具类集合"中涉及的关键知识点,包括网络连接、...

Global site tag (gtag.js) - Google Analytics