文件下载

1.使用http协议下载文件

  

创建一个HttpURLConnection对象

  HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();

获得一个InputStream对象

  urlConn.getInputStream();

访问网络权限

  Android.permission.INTERNET

2.将文件写入sdcard

  得到当前设备SD卡的目录

    Environment.getExternalStorageDirectory()

  访问SD卡的权限

    android.permission.WRITE_EXERNAL_STORIGE

//下载普通形式的文件

public String download(String urlStr){
StringBuffer sb = new StringBuffer() ;
String line = null ;
BufferedReader buffer = null;
try{
//创建URL对象
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) {
// TODO: handle exception
e.printStackTrace();
}finally{
try{
buffer.close();
}catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}
return sb.toString() ;

}

 //下载任意行事的文件

public String download(String urlStr,String path,String fileName){
InputStream inputStream = null ;
try{

  FileUtils fileUtils = new FileUtils () ;

  if(fileUtils.isFileExistt(path + fileName)){

    return 1 ;

  }else{

    inputStream = getInoutStreamFromUrl(urlStr);

File resultFile = fileUtils.wrie2sFromInput(path,fileName,inputStream);

if(resultFile == null)

return -1 ;

  }
}
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();

return  -1;
}finally{
try{
buffer.close();
}catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}
return sb.toString() ;

}

 ////***FileUtils类***///

package com.hl;

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 FileUtils {
private String SDPATH;

public String getSDPATH(){
return SDPATH ;
}

public FileUtils(){
//得到当前设备的目录
SDPATH = Environment.getExternalStorageDirectory()+"/" ;
}
//在sd卡上创建目录
public File createSDFile(String fileName) throws IOException{
File file = new File(SDPATH + fileName) ;
file.createNewFile() ;
return file ;
}

//在sd卡上创建目录
public File createSDDir(String dirName){
File dir = new File(SDPATH + dirName) ;
dir.mkdir() ;
return dir ;
}
//判断sd卡上的文件夹是否存在
public boolean IsFileExist(String fileName){
File file = new File(SDPATH + fileName);
return file.exists() ;
}
//将InputStream里的数据写入到SD卡中
public File write2sFormInput(String path,String fileName,InputStream input){
File file = null ;
OutputStream output = null ;
try{
createSDDir(path);
file = createSDFile(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();
// TODO: handle exception
}finally{
try{
output.close();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace() ;
}
}
return file ;
}
}

原文地址:https://www.cnblogs.com/heartstong/p/4679490.html