android 网络下载文件 和 读写sdcard 方法
2014-12-22 17:26
661 查看
原创: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类:
点击(此处)折叠或打开
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
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(2) | 评论(0) | 转发(0) |
0
上一篇:android 操作数据库
下一篇:linux pwm 应用
相关热门文章
Android之开发环境搭建
Android自定义View的实现...
AndroidManifest.xml配置文件...
Android源码调试方法详解...
不用vs和cygwin!Eclipse+cdt...
请问Linux默认shell的是什么 ...
谁能够帮我解决LINUX 2.6 10...
现在的博客积分不会更新了吗?...
shell怎么读取网页内容...
ssh等待连接的超时问题...
给主人留下些什么吧!~~
评论热议
转载请注明原创出处,尊重他人的劳动成果。
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
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(2) | 评论(0) | 转发(0) |
0
上一篇:android 操作数据库
下一篇:linux pwm 应用
相关热门文章
Android之开发环境搭建
Android自定义View的实现...
AndroidManifest.xml配置文件...
Android源码调试方法详解...
不用vs和cygwin!Eclipse+cdt...
请问Linux默认shell的是什么 ...
谁能够帮我解决LINUX 2.6 10...
现在的博客积分不会更新了吗?...
shell怎么读取网页内容...
ssh等待连接的超时问题...
给主人留下些什么吧!~~
评论热议
相关文章推荐
- 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】下载文件至本应用程序的file目录或者sdcard
- Android之怎么操作文件(读写以及保存到sdcard)
- 转:Android下文件操作模式(含SDCard的读写)
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- Android下文件操作模式(含SDCard的读写)
- Android SDCard操作(文件读写,容量计算)
- Android下文件操作模式(含SDCard的读写)