android 网络下载文件 和 读写sdcard 方法
来源:互联网 发布:java接口压力测试工具 编辑:程序博客网 时间:2024/06/07 05:38
原创:kylin_zeng http://blog.chinaunix.net/uid/23795897.html 在此感谢mars 老师的帮助。
转载请注明原创出处,尊重他人的劳动成果。
1、访问网络和sdcard 权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2、创建两个按钮:
downloadTxtButton = (Button)findViewById(R.id.downloadTxt);
downloadTxtButton.setOnClickListener(new DownloadTxtListener());
downloadMp3Button = (Button)findViewById(R.id.downloadMp3);
downloadMp3Button.setOnClickListener(new DownloadMp3Listener());
3、设置监听器:
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);
}
}
4、下载的 HttpDownloader 类:
/**
* 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容
* 1.创建一个URL对象
* 2.通过URL对象,创建一个HttpURLConnection对象
* 3.得到InputStram
* 4.从InputStream当中读取数据
* @param urlStr
* @return
*/
public class HttpDownloader {
private URL url = null;
public String download(String urlStr) { //download 函数,实现下载后返回字符串。
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()));
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(); //FileUtils 是自己定义的一个读写sdcard的类
if (fileUtils.isFileExist(path + fileName)) {
return 1;
} else {
inputStream = getInputStreamFromUrl(urlStr); //自己定义的一个函数,从给的url网址获取数据流,见下面
File resultFile = fileUtils.write2SDFromInput(path,fileName, inputStream); //FileUtils 类里面的一个函数,讲数据流写到sdcard中。
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;
}
}
5、读写sdcard的FileUtils类:
mars视频教程ppt和代码01_18_src.zip
转载请注明原创出处,尊重他人的劳动成果。
1、访问网络和sdcard 权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2、创建两个按钮:
downloadTxtButton = (Button)findViewById(R.id.downloadTxt);
downloadTxtButton.setOnClickListener(new DownloadTxtListener());
downloadMp3Button = (Button)findViewById(R.id.downloadMp3);
downloadMp3Button.setOnClickListener(new DownloadMp3Listener());
3、设置监听器:
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);
}
}
4、下载的 HttpDownloader 类:
/**
* 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容
* 1.创建一个URL对象
* 2.通过URL对象,创建一个HttpURLConnection对象
* 3.得到InputStram
* 4.从InputStream当中读取数据
* @param urlStr
* @return
*/
public class HttpDownloader {
private URL url = null;
public String download(String urlStr) { //download 函数,实现下载后返回字符串。
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()));
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(); //FileUtils 是自己定义的一个读写sdcard的类
if (fileUtils.isFileExist(path + fileName)) {
return 1;
} else {
inputStream = getInputStreamFromUrl(urlStr); //自己定义的一个函数,从给的url网址获取数据流,见下面
File resultFile = fileUtils.write2SDFromInput(path,fileName, inputStream); //FileUtils 类里面的一个函数,讲数据流写到sdcard中。
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;
}
}
5、读写sdcard的FileUtils类:
点击(此处)折叠或打开
- public class FileUtils {
- private String SDPATH;
- public String getSDPATH() {
- return SDPATH;
- }
- public FileUtils() { // 构造函数,new 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){ //最大每次只能输出4K
- 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;
- }
- }
mars视频教程ppt和代码01_18_src.zip
0
上一篇:android 操作数据库
下一篇:linux pwm 应用
相关热门文章
- Android之开发环境搭建
- Android自定义View的实现...
- AndroidManifest.xml配置文件...
- Android源码调试方法详解...
- 不用vs和cygwin!Eclipse+cdt...
- 请问Linux默认shell的是什么 ...
- 谁能够帮我解决LINUX 2.6 10...
- 现在的博客积分不会更新了吗?...
- shell怎么读取网页内容...
- ssh等待连接的超时问题...
给主人留下些什么吧!~~
评论热议
0 0
- android 网络下载文件 和 读写sdcard 方法
- android 读写sdcard文件
- android 文件读写,sdcard写入
- Android sdcard文件读写操作
- 在android开发中正确读写sdcard文件的方法
- Android开发中正确读写sdcard文件的方法
- Android之再谈文件操作和SDcard读写
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- Android 文件在SDCard上读写操作
- Android SDCard操作(文件读写,容量计算)
- list 控件
- Android中获取应用程序(包)的大小-----PackageManager的使用(二)
- android 操作数据库
- 第十七周项目6-学生成绩统计(5)
- Centos下服务器版本安装mysql
- android 网络下载文件 和 读写sdcard 方法
- opencv 检测待测图片是否包含样本
- linux pwm 应用
- ContentProvider 用法
- android xml文件的解析
- __attribute__
- android wifi 的开启,关闭,查询等。
- Android TCP 和 UDP
- QT中为生成的exe运行文件添加图标
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
铁树开花什么意思
宠妻屁股开花
一棵开花的树
开花不结果作品
铁树开花歇后语下一句
红糖开花馒头
虎皮兰开花不是好兆头
宝贝自己搬开花蕾接受惩罚
文竹开花有什么兆头
柳树开花图片
铁树开花指哪个生肖
春天开的花
秋天开的花
昙花什么时候开花
桂花什么时候开花
农女有田有点闲饭团开花
赶尸艳谭2完整倩女性开花
开荒作品
无限开荒者
开荒
大明开荒团
远古来开荒
神煌开荒
兄妹开荒
开荒大领主
开荒新书
新居开荒
开荒公司
装修开荒
开荒价格
未来开荒
开荒费用
毁林开荒
新房 开荒
开荒神煌
南泥湾开荒
开荒流程
开荒者
魏大勋开荒犁地
神运仙王开荒
无限之开荒者