文件下载

来源:互联网 发布:unity3d可以不用vs2015 编辑:程序博客网 时间:2024/05/16 23:47
 

一 FileUtil

 

      package mars.utils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import mars.model.Mp3Info;
import android.os.Environment;

public class FileUtils {
 private String SDCardRoot;

 public FileUtils() {
  // 得到当前外部存储设备的目录
  SDCardRoot = Environment.getExternalStorageDirectory()
    .getAbsolutePath()
    + File.separator;
 }

 /**
  * 在SD卡上创建文件
  *
  * @throws IOException
  */
 public File createFileInSDCard(String fileName, String dir)
   throws IOException {
  File file = new File(SDCardRoot + dir + File.separator + fileName);
  System.out.println("file---->" + file);
  file.createNewFile();
  return file;
 }

 /**
  * 在SD卡上创建目录
  *
  * @param dirName
  */
 public File creatSDDir(String dir) {
  File dirFile = new File(SDCardRoot + dir + File.separator);
  System.out.println(dirFile.mkdirs());
  return dirFile;
 }

 /**
  * 判断SD卡上的文件夹是否存在
  */
 public boolean isFileExist(String fileName, String path) {
  File file = new File(SDCardRoot + path + File.separator + fileName);
  return file.exists();
 }

 /**
  * 将一个InputStream里面的数据写入到SD卡中
  */
 public File write2SDFromInput(String path, String fileName,
   InputStream input) {

  File file = null;
  OutputStream output = null;
  try {
   creatSDDir(path);
   file = createFileInSDCard(fileName, path);
   output = new FileOutputStream(file);
   byte buffer[] = new byte[4 * 1024];
   int temp;
   while ((temp = input.read(buffer)) != -1) {
    output.write(buffer, 0, temp);
   }
   output.flush();
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   try {
    output.close();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
  return file;
 }

 /**
  * 读取目录中的Mp3文件的名字和大小
  */
 public List<Mp3Info> getMp3Files(String path) {
  List<Mp3Info> mp3Infos = new ArrayList<Mp3Info>();
  File file = new File(SDCardRoot + File.separator + path);
  File[] files = file.listFiles();
  FileUtils fileUtils = new FileUtils();
  for (int i = 0; i < files.length; i++) {
   if (files[i].getName().endsWith("mp3")) {
    Mp3Info mp3Info = new Mp3Info();
    mp3Info.setMp3Name(files[i].getName());
    mp3Info.setMp3Size(files[i].length() + "");
    String temp [] = mp3Info.getMp3Name().split("\\.");
    String eLrcName = temp[0] + ".lrc";
    if(fileUtils.isFileExist(eLrcName, "/mp3")){
     mp3Info.setLrcName(eLrcName);
    }
    mp3Infos.add(mp3Info);
   }
  }
  return mp3Infos;
 }

}

 

 

 

二  下载:

 

  package mars.download;

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.MalformedURLException;
import java.net.URL;

import mars.utils.FileUtils;


public class HttpDownloader {
 private URL url = null;

 /**
  * 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容
  * 1.创建一个URL对象
  * 2.通过URL对象,创建一个HttpURLConnection对象
  * 3.得到InputStram
  * 4.从InputStream当中读取数据
  * @param urlStr
  * @return
  */
 public String download(String urlStr) {
  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();
   if (fileUtils.isFileExist(fileName,path)) {
    return 1;
   } else {
    inputStream = getInputStreamFromUrl(urlStr);
    File resultFile = fileUtils.write2SDFromInput(path,fileName, inputStream);
    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;
 }
}

原创粉丝点击