想把文件保存到SD卡中,一定要知道SD卡的路径,获取SD卡路径:

Environment.getExternalStorageDirectory()

另外,在保存之前要判断SD卡是否已经安装好,并且可读写:

//判断SDcard是否存在并且可读写
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
service.saveToSDCard(filename,filecontent);
Toast.makeText(getApplicationContext(), R.string.success, ).show();
}else{
Toast.makeText(getApplicationContext(), R.string.sdcarderror, ).show();
}

实例

1. 下载存文本文件和下载如mp3等大容量的文件

2.代码编写

AndroidMainfest.xml中配置

主要是解决网络权限和写SDCard的权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.jingling.practice.downloadtest" > <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" > <activity
android:name=".MainActivity"
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> </manifest>
package util;

import android.util.Log;

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; /**
* Created by Spring on 2015/11/7.
* 下载工具类
*/
public class HttpDownloader {
private URL url = null;
private final String TAG = "TAG"; /**
* 读取文本文件
* @param urlStr url路径
* @return 文本信息
* 根据url下载文件,前提是这个文件中的内容是文本,
* 1.创建一个URL对象
* 2.通过URL对象,创建一个Http连接
* 3.得到InputStream
* 4.从InputStream中得到数据
*/
public String download(String urlStr) {
StringBuffer sb = new StringBuffer();
String line = null;
BufferedReader bufferedReader = null; try {
url = new URL(urlStr);
//创建http连接
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
//使用IO流读取数据
bufferedReader = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
finally {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Log.e("TAG","下载txt文件");
Log.e("TAG",sb.toString());
return sb.toString();
} /**
* 读取任何文件
* 返回-1 ,代表下载失败。返回0,代表成功。返回1代表文件已经存在
*
* @param urlStr
* @param path
* @param fileName
* @return
*/
public int downlaodFile(String urlStr, String path, String fileName) {
InputStream input = null; try {
FileUtil fileUtil = new FileUtil();
if (fileUtil.isFileExist(path + fileName)) {
return ;
} else {
input = getInputStearmFormUrl(urlStr);
File resultFile = fileUtil.write2SDFromInput(path,fileName,input);
if (resultFile == null)
return -;
}
} catch (IOException e) {
e.printStackTrace();
return -;
}
finally {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return ;
} public InputStream getInputStearmFormUrl(String urlStr) throws IOException {
url = new URL(urlStr);
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
InputStream input = urlConn.getInputStream();
return input;
}
}

FileUtil.java

package util;

import android.os.Environment;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; /**
* Created by Spring on 2015/11/7.
*/
public class FileUtil {
private String SDPATH; public FileUtil() { } public String getSDPATH() {
return SDPATH;
} public FileUtil(String SDPATH){
//得到外部存储设备的目录(/SDCARD)
SDPATH = Environment.getExternalStorageDirectory() + "/" ;
} /**
* 在SD卡上创建文件
* @param fileName
* @return
* @throws java.io.IOException
*/
public File createSDFile(String fileName) throws IOException {
File file = new File(SDPATH + fileName);
file.createNewFile();
return file;
} /**
* 在SD卡上创建目录
* @param dirName 目录名字
* @return 文件目录
*/
public File createDir(String dirName){
File dir = new File(SDPATH + dirName);
dir.mkdir();
return dir;
} /**
* 判断文件是否存在
* @param fileName
* @return
*/
public boolean isFileExist(String fileName){
File file = new File(SDPATH + fileName);
return file.exists();
} public File write2SDFromInput(String path,String fileName,InputStream input){
File file = null;
OutputStream output = null; try {
createDir(path);
file =createSDFile(path + fileName);
output = new FileOutputStream(file);
byte [] buffer = new byte[ * ];
while(input.read(buffer) != -){
output.write(buffer);
output.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
finally {
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return file;
}
}

3.MainActivity

package com.jingling.practice.downloadtest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button; import util.HttpDownloader; public class MainActivity extends Activity {
HttpDownloader downloader ; private Button btn_downFile;
private Button btn_downMP3; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_downFile = (Button)this.findViewById(R.id.button);
btn_downMP3 = (Button)this.findViewById(R.id.button2);
btn_downFile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
downloader = new HttpDownloader();
String urlStr = "http://172.17.54.91:8080/download/down.txt";
downloader.download(urlStr);
}
});
btn_downMP3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String urlStr="http://172.17.54.91:8080/download/1.mp3";
String path="file";
String fileName="2.mp3";
HttpDownloader httpDownloader = new HttpDownloader();
httpDownloader.downlaodFile(urlStr,path,fileName);
}
});
} }

Android HTTP下载文件并保存到本地或SD卡的更多相关文章

  1. android:http下载文件并保存到本地或SD卡

    想把文件保存到SD卡中,一定要知道SD卡的路径,获取SD卡路径: Environment.getExternalStorageDirectory() 另外,在保存之前要判断SD卡是否已经安装好,并且可 ...

  2. java 从服务器下载文件并保存到本地

    昨天在做一个项目时,用到了从服务器上下载文件并保存到本地的知识,以前也没有接触过,昨天搞了一天,这个小功能实现了,下面就简单的说一下实现过程: 1.基础知识          当我们想要下载网站上的某 ...

  3. android中使用Http下载文件并保存到本地SD卡

    1.AndroidMainfest.xml中设置权限 <uses-permission android:name="android.permission.INTERNET"& ...

  4. Android 获取屏幕截图 和保存到本地的sd卡路径下

    /** * 获取和保存当前屏幕的截图 */ private void GetandSaveCurrentImage() { //1.构建Bitmap WindowManager windowManag ...

  5. Java从指定URL下载文件并保存到指定目录

    1.基本流程 当我们想要下载网站上的某个资源时,我们会获取一个url,它是服务器定位资源的一个描述,下载的过程有如下几步: (1)客户端发起一个url请求,获取连接对象. (2)服务器解析url,并且 ...

  6. BitmapUtil【缩放bitmap以及将bitmap保存成图片到SD卡中】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 用于缩放bitmap以及将bitmap保存成图片到SD卡中 效果图 代码分析 bitmapZoomByHeight(Bitmap s ...

  7. Android自定义照相机实现(拍照、保存到SD卡,利用Bundle在Acitivity交换数据)

    Android自定义照相机实现 近期小巫在学校有一个创新项目,也不是最近,是一个拖了很久的项目,之前一直没有去搞,最近因为要中期检查,搞得我跟小组成员一阵忙活,其实开发一款照相机软件并不太难,下面就是 ...

  8. Android开发调试日志工具类[支持保存到SD卡]

    直接上代码: package com.example.callstatus; import java.io.File; import java.io.FileWriter; import java.i ...

  9. Android eclipse 运行项目设置程序默认安装到SD卡

    Android eclipse 运行项目设置程序默认安装到SD卡  1.在Android手机启用USB调试功能 2.在Windows系统中打开命令提示符(开始菜单,选择运行,输入cmd回车即可),使用 ...

随机推荐

  1. SOUI界面库 添加 windows系统文件图标皮肤

    最近在学习soui界面库.其中有用到SListCtrl这个控件来现在文件信息.控件用法基本上和mfc 的CListCtrl差不多.也支持图标显示.但是图标是要自己加入图标图片的.这个就有点不好弄.于是 ...

  2. 关于MySQL中自增的理解和设置

    show create table t10;--查看表的创建结果 show create table t10\G;--竖列查看 --设置自增为20 ); insert into t2(name) va ...

  3. Django CBV视图解决csrf认证

    urls.py from django.conf.urls import url from appxx import views urlpatterns = [ url(r"^$" ...

  4. 【LeetCode Weekly Contest 26 Q1】Longest Uncommon Subsequence I

    [题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/longest-uncommon-subsequence ...

  5. oracle 增量导出/导入

    一.   导出/导入(Export/Import) ----   利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle数据库中去. ----   1.   ...

  6. hdu 4859 最大点权独立集的变形(方格取数的变形)

    /*刚开始不会写,最大点权独立集神马都不知道,在潘神的指导下终于做出来,灰常感谢ps: 和方格取数差不多奇偶建图,对于D必割点权为0,对于.必然不割点权为inf.然后和方格取数差不多的建图 .--.| ...

  7. 01背包--小P寻宝记——粗心的基友

    题目描写叙述 这对好基友他们在经历无数的艰难险阻后.最终找到了宝藏.无奈的是这一对好基友居然是一样的粗心,又忘记了带一个大一点的包包,可惜啊..选择又出现了啊.. 已知包的体积是v,每种宝贝仅仅有一种 ...

  8. 菜鸟nginx源代码剖析 配置与部署篇(一) 手把手实现nginx &quot;I love you&quot;

    菜鸟nginx源代码剖析 配置与部署篇(一) 手把手配置nginx "I love you" Author:Echo Chen(陈斌) Email:chenb19870707@gm ...

  9. linux下查看监听port相应的进程

    使用netstat查看进程PID [root@test ~]# netstat -anp|grep 5001 tcp 0 0 :::5001 :::* LISTEN 12886/java 之后各位看官 ...

  10. Android实战简易教程-第二十四枪(基于Baas的用户表查询功能实现!)

    接着上一篇,我们注冊了几个用户,用户表例如以下: 以下我们用ListView将表中数据显示出来吧. 首先看一下main.xml: <RelativeLayout xmlns:android=&q ...