内存卡操作及文件下载功能的实现
2013-02-25 17:39
381 查看
一、权限的获取:
应用程序如要要使用联网功能,或者是操作SD卡,需要在AndroidManifest.xml中配置相应的权限:
[xhtml] view plaincopy
<!-- 联网权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
<!-- SD卡操作权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
二、要操作SD卡,首先要读取它在Android操作系统中的路径:
[java] view plaincopy
SDCardPath = Environment.getExternalStorageDirectory() + "/";
三、获取了SD卡的路径之后的操作,同于Java中的文件IO操作,此不赘述。
四、网络操作
1、由URL获取HTTP连接
[java] view plaincopy
import java.net.HttpURLConnection;
import java.net.URL;
url = new URL(strUrl); // 获取URL
// 获取HTTP连接
urlConn = (HttpURLConnection) url.openConnection();
2、由HTTP连接获取输入字节流
[java] view plaincopy
java.io.InputStream = urlConn.getInputStream()
3、其它操作同Java IO操作
五、示例代码:下载一个文本文件在控制行输出其内容,再下载这个文件保存早SD卡下
1、AndroidManifest.xml
[xhtml] view plaincopy
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="me.bym"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="4" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".DownLoadActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>
2、文件操作类FileHelper.java
[java] view plaincopy
package me.bym.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 FileHelper {
private String SDCardPath = null; // SD卡在Android文件系统中的路径
public String getPath() {
return SDCardPath;
}
/**
* 构造方法,获取SD卡在Android文件系统中的路径
*/
public FileHelper() {
SDCardPath = Environment.getExternalStorageDirectory() + "/";
}
/**
* 在SD卡上创建文件
*
* @param fileName
* 要创建的文件名
* @return 创建得到的文件
*/
public File createSDFile(String fileName) throws IOException {
File file = new File(SDCardPath + fileName);
file.createNewFile();
return file;
}
/**
* 在SD卡上创建目录
*
* @param dirName
* 要创建的目录名
* @return 创建得到的目录
*/
public File createSDDir(String dirName) {
File dir = new File(SDCardPath + dirName);
dir.mkdir();
return dir;
}
/**
* 判断文件是否已经存在
*
* @param fileName
* 要检查的文件名
* @return boolean, true表示存在,false表示不存在
*/
public boolean isFileExist(String fileName) {
File file = new File(SDCardPath + fileName);
return file.exists();
}
/**
* 将一个输入流中的内容写入到SD卡上生成文件
*
* @param path
* 文件目录
* @param fileName
* 文件名
* @param inputStream
* 字节输入流
* @return 得到的文件
*/
public File writeToSDCard(String path, String fileName,
InputStream inputStream) {
File file = null;
OutputStream output = null;
try{
createSDDir(path);
file = createSDFile(path + fileName);
output = new FileOutputStream(file);
byte buffer [] = new byte[4 * 1024];
while((inputStream.read(buffer)) != -1){
output.write(buffer);
}
output.flush();
}
catch(Exception e){
e.printStackTrace();
}
finally{
try{
output.close();
}
catch(Exception e){
e.printStackTrace();
}
}
return file;
}
}
3、HTTP下载操作类HttpDownloadHelper.java
[java] view plaincopy
package me.bym.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 HttpDownloadHelper {
private URL url = null;
private HttpURLConnection urlConn = null;
private final int SUCCESS = 1;
private final int EXIST = 0;
private final int ERROR = -1;
/**
* 通过传递一个url下载对应的文本文件。
*
* @param strUrl
* 下载文件的URL地址
* @return 下载得到的文本文件内容字符串
*/
public String textDownload(String strUrl) {
StringBuilder sb = new StringBuilder(512); // 初始化文本内容缓冲区。
String line = null;
BufferedReader br = null;
try {
url = new URL(strUrl); // 获取URL
// 获取HTTP连接
urlConn = (HttpURLConnection) url.openConnection();
br = new BufferedReader(new InputStreamReader(
urlConn.getInputStream()));
while ((line = br.readLine()) != null) {
sb.append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
/**
* 通过传递一个url下载对应的文件。
*
* @param strUrl
* 下载文件的url地址
* @param path
* 保存文件的路径
* @param fileName
* 保存文件的文件名
* @return SUCCESS:文件下载成功 ERROR:文件下载失败 EXIST:同名文件已存在
*/
public int fileDownload(String strUrl, String path, String fileName) {
FileHelper fileHelper = new FileHelper();
InputStream inputStream = null;
File file = null;
if (fileHelper.isFileExist(path + fileName)) {
return EXIST;
} else {
try {
inputStream = getInputStream(strUrl);
file = fileHelper.writeToSDCard(path, fileName, inputStream);
if (file == null) {
return ERROR;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return SUCCESS;
}
/**
* 通过一个url获取http连接的输入流
*
* @param strUrl
* 目标url
* @return 到该url的http连接的输入流
* @throws IOException
*/
private InputStream getInputStream(String strUrl) throws IOException {
url = new URL(strUrl);
urlConn = (HttpURLConnection) url.openConnection();
InputStream is = urlConn.getInputStream();
return is;
}
}
4、Activity类
[java] view plaincopy
package me.bym;
import me.bym.utils.HttpDownloadHelper;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class DownLoadActivity extends Activity {
private Button downloadText = null;
private Button downloadFile = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
downloadText = (Button) findViewById(R.id.downloadText);
downloadText.setOnClickListener(new downTextListener());
downloadFile = (Button) findViewById(R.id.downloadFile);
downloadFile.setOnClickListener(new downFileListener());
}
class downTextListener implements OnClickListener {
@Override
public void onClick(View v) {
HttpDownloadHelper downHelper = new HttpDownloadHelper();
String str = downHelper
.textDownload("http://news.swjtu.edu.cn/shownews-2638.html");
System.out.println(str);
}
}
class downFileListener implements OnClickListener {
@Override
public void onClick(View v) {
HttpDownloadHelper downHelper = new HttpDownloadHelper();
int res = downHelper.fileDownload(
"http://www.swjtu.edu.cn/images/swjtu_title.jpg", "myImg/", "a.html");
switch (res) {
case 0:
System.out.println("文件已存在");
break;
case 1:
System.out.println("文件下载成功");
break;
case -1:
System.out.println("文件下载失败");
break;
}
}
}
}
原文:http://blog.csdn.net/baoyiming1991/article/details/6307373
应用程序如要要使用联网功能,或者是操作SD卡,需要在AndroidManifest.xml中配置相应的权限:
[xhtml] view plaincopy
<!-- 联网权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
<!-- SD卡操作权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
二、要操作SD卡,首先要读取它在Android操作系统中的路径:
[java] view plaincopy
SDCardPath = Environment.getExternalStorageDirectory() + "/";
三、获取了SD卡的路径之后的操作,同于Java中的文件IO操作,此不赘述。
四、网络操作
1、由URL获取HTTP连接
[java] view plaincopy
import java.net.HttpURLConnection;
import java.net.URL;
url = new URL(strUrl); // 获取URL
// 获取HTTP连接
urlConn = (HttpURLConnection) url.openConnection();
2、由HTTP连接获取输入字节流
[java] view plaincopy
java.io.InputStream = urlConn.getInputStream()
3、其它操作同Java IO操作
五、示例代码:下载一个文本文件在控制行输出其内容,再下载这个文件保存早SD卡下
1、AndroidManifest.xml
[xhtml] view plaincopy
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="me.bym"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="4" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".DownLoadActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>
2、文件操作类FileHelper.java
[java] view plaincopy
package me.bym.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 FileHelper {
private String SDCardPath = null; // SD卡在Android文件系统中的路径
public String getPath() {
return SDCardPath;
}
/**
* 构造方法,获取SD卡在Android文件系统中的路径
*/
public FileHelper() {
SDCardPath = Environment.getExternalStorageDirectory() + "/";
}
/**
* 在SD卡上创建文件
*
* @param fileName
* 要创建的文件名
* @return 创建得到的文件
*/
public File createSDFile(String fileName) throws IOException {
File file = new File(SDCardPath + fileName);
file.createNewFile();
return file;
}
/**
* 在SD卡上创建目录
*
* @param dirName
* 要创建的目录名
* @return 创建得到的目录
*/
public File createSDDir(String dirName) {
File dir = new File(SDCardPath + dirName);
dir.mkdir();
return dir;
}
/**
* 判断文件是否已经存在
*
* @param fileName
* 要检查的文件名
* @return boolean, true表示存在,false表示不存在
*/
public boolean isFileExist(String fileName) {
File file = new File(SDCardPath + fileName);
return file.exists();
}
/**
* 将一个输入流中的内容写入到SD卡上生成文件
*
* @param path
* 文件目录
* @param fileName
* 文件名
* @param inputStream
* 字节输入流
* @return 得到的文件
*/
public File writeToSDCard(String path, String fileName,
InputStream inputStream) {
File file = null;
OutputStream output = null;
try{
createSDDir(path);
file = createSDFile(path + fileName);
output = new FileOutputStream(file);
byte buffer [] = new byte[4 * 1024];
while((inputStream.read(buffer)) != -1){
output.write(buffer);
}
output.flush();
}
catch(Exception e){
e.printStackTrace();
}
finally{
try{
output.close();
}
catch(Exception e){
e.printStackTrace();
}
}
return file;
}
}
3、HTTP下载操作类HttpDownloadHelper.java
[java] view plaincopy
package me.bym.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 HttpDownloadHelper {
private URL url = null;
private HttpURLConnection urlConn = null;
private final int SUCCESS = 1;
private final int EXIST = 0;
private final int ERROR = -1;
/**
* 通过传递一个url下载对应的文本文件。
*
* @param strUrl
* 下载文件的URL地址
* @return 下载得到的文本文件内容字符串
*/
public String textDownload(String strUrl) {
StringBuilder sb = new StringBuilder(512); // 初始化文本内容缓冲区。
String line = null;
BufferedReader br = null;
try {
url = new URL(strUrl); // 获取URL
// 获取HTTP连接
urlConn = (HttpURLConnection) url.openConnection();
br = new BufferedReader(new InputStreamReader(
urlConn.getInputStream()));
while ((line = br.readLine()) != null) {
sb.append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
/**
* 通过传递一个url下载对应的文件。
*
* @param strUrl
* 下载文件的url地址
* @param path
* 保存文件的路径
* @param fileName
* 保存文件的文件名
* @return SUCCESS:文件下载成功 ERROR:文件下载失败 EXIST:同名文件已存在
*/
public int fileDownload(String strUrl, String path, String fileName) {
FileHelper fileHelper = new FileHelper();
InputStream inputStream = null;
File file = null;
if (fileHelper.isFileExist(path + fileName)) {
return EXIST;
} else {
try {
inputStream = getInputStream(strUrl);
file = fileHelper.writeToSDCard(path, fileName, inputStream);
if (file == null) {
return ERROR;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return SUCCESS;
}
/**
* 通过一个url获取http连接的输入流
*
* @param strUrl
* 目标url
* @return 到该url的http连接的输入流
* @throws IOException
*/
private InputStream getInputStream(String strUrl) throws IOException {
url = new URL(strUrl);
urlConn = (HttpURLConnection) url.openConnection();
InputStream is = urlConn.getInputStream();
return is;
}
}
4、Activity类
[java] view plaincopy
package me.bym;
import me.bym.utils.HttpDownloadHelper;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class DownLoadActivity extends Activity {
private Button downloadText = null;
private Button downloadFile = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
downloadText = (Button) findViewById(R.id.downloadText);
downloadText.setOnClickListener(new downTextListener());
downloadFile = (Button) findViewById(R.id.downloadFile);
downloadFile.setOnClickListener(new downFileListener());
}
class downTextListener implements OnClickListener {
@Override
public void onClick(View v) {
HttpDownloadHelper downHelper = new HttpDownloadHelper();
String str = downHelper
.textDownload("http://news.swjtu.edu.cn/shownews-2638.html");
System.out.println(str);
}
}
class downFileListener implements OnClickListener {
@Override
public void onClick(View v) {
HttpDownloadHelper downHelper = new HttpDownloadHelper();
int res = downHelper.fileDownload(
"http://www.swjtu.edu.cn/images/swjtu_title.jpg", "myImg/", "a.html");
switch (res) {
case 0:
System.out.println("文件已存在");
break;
case 1:
System.out.println("文件下载成功");
break;
case -1:
System.out.println("文件下载失败");
break;
}
}
}
}
原文:http://blog.csdn.net/baoyiming1991/article/details/6307373
相关文章推荐
- 内存卡操作及文件下载功能的实现
- Android学习笔记12——内存卡操作及文件下载功能的实现
- Android学习笔记12——内存卡操作及文件下载功能的实现
- 整合springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap实现权限管理文件上传下载多数据源切换操作日志记录等功能
- html制作简单框架网页 实现自己的音乐驿站 操作步骤及源文件下载 (播放功能限mp3文件)
- 文件一键上传、汉字转拼音、excel文件上传下载功能模块的实现
- Python实现简易文件服务器 包含上传下载删除新建目录功能
- .Net实现文件下载功能
- Dropzone.js实现文件拖拽上传功能(附源码下载)
- 关于使用LinkButton实现点击超链完成文件下载的功能
- Android中使用AsyncTask实现下载文件动态更新进度条功能
- JavaWeb实现文件上传下载功能实例解析
- 项目中使用高速缓冲流实现文件下载功能
- Retrofit+Rxjava +flatMap操作符 实现单个文件下载功能并回调下载进度
- Java servlet 简单实现http文件下载断点续传功能
- Android Webview实现文件下载功能
- 调用hadoop api实现文件的上传、下载、删除、创建目录和显示功能
- iOS开发中文件的上传和下载功能的基本实现
- Java中实现FTP上传下载文件的功能
- C#怎么实现文件下载功能