您的位置:首页 > 理论基础 > 计算机网络

使用Http方式下载文本类型的文件及其他类型的文件

2011-04-14 13:41 579 查看
使用HTTP方式从网络上下载txt文本文件,并返回文本文件中的内容。

此方法只支持下载文本类型的文件

/***
* 通过URL下载XML文件
* @param urlStr XML文件的URL地址
* @return XML文件的内容
*/
public String DownloadXML(String urlStr)
{
//定义个StringBuffer类型的变量用于存储下载到得xml文件的内容
StringBuffer sBuffer = new StringBuffer();
String line = null;
BufferedReader bufferedReader = null;

try {
//创建一个URL对象存储下载地址
URL url = new URL(urlStr);
//创建一个url连接
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
//下载网络上的XML文件
//在网络上下载到得数据为字节流,用InputStreamReader转换成字符流,然后转换成BufferedReader类型使用readline方法方便操作
bufferedReader = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
//循环读取buuferedReader中的每一行,赋值给sBuffer对象
while ((line = bufferedReader.readLine()) != null) {
sBuffer.append(line);
}

} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return sBuffer.toString();
}


Android访问网络需要添加网络访问权限

在manifest.xml中添加如下代码

<uses-permission android:name="android.permission.INTERNET"></uses-permission>


下载各种类型的文件,并将文件写如到SD卡。

package paj.HttpDownload;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import paj.Utils.FileUtils;
public class HttpDownloaderFile {

/***
* 下载各种类型文件
* @param urlStr 下载URL地址
* @param path	保存路径
* @param fileName 文件名
* @return 0:文件下载成功  1:文件已经存在   -1:下载失败
* @throws IOException
*/
public int downFile(String urlStr , String path , String fileName) throws IOException{
InputStream inputStream = null;

//实例化FileUtils,我自定义的用户功能类
FileUtils fileUtils = new FileUtils();
//测试文件是否存在
if(fileUtils.isFileExist(fileName, path)){
//文件存在返回1
return 1;
}else {
try {
//获取下载的文件数据流
inputStream = getInputStreamFormUrl(urlStr);
//把文件写入到SD卡中,其中调用了用户功能类中的函数
File resulFile = fileUtils.write2SDFromInput(path, fileName, inputStream);
//如果数据为空则下载失败,返回-1
if (resulFile == null) {
return -1;
}

} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{
inputStream.close();
}
}
//下载成功返回0
return 0;
}

/***
* 得到下载的数据
* @param urlStr 下载文件的URL地址
* @return 返回下载到得数据流
* @throws IOException
*/
public InputStream getInputStreamFormUrl(String urlStr) throws IOException
{
//创建一个URL对象
URL url = new URL(urlStr);
//创建一个URL对象的链接
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
//获取文件数据流
InputStream inputStream = urlConnection.getInputStream();
//返回获取到得数据
return inputStream;

}
}


代码中调用了FileUtils类,这个类里面定义的是对SD卡的操作函数。请看下一篇日志。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐