android中对sd卡的操作

来源:互联网 发布:淘宝主图白底图要求 编辑:程序博客网 时间:2024/05/17 03:50

package com.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;

/**
 * 这是一个封装的访问SD的java文件,可以再其他文件中直接调用
 * @author zl 
 */

public class FileUtils {
 private String SDPATH;
 
 public String getSDPATH(){
  return SDPATH;
 }
 
 public FileUtils(){
  //得到外部存储设备的目录

//这里要注意 因为1.5版本和1.6版本的sd卡的目录不同,这个读者可以自己查询
  SDPATH = Environment.getExternalStorageDirectory()+"/";
 }
 
 /**
  * 在SD卡上创建文件
  * @param filename --文件名
  * @return
  * @throws IOException
  */
 public File creatSDFile(String filename) throws IOException{
  File file = new File(SDPATH+filename);
  file.createNewFile();
  return file;
 }
 
 /**
  * 在SD卡上创建目录
  * @param dirName --目录名
  * @return
  */
 public File creatSDDir(String dirName){
  File dir = new File(SDPATH+dirName);
  dir.mkdirs();
  return dir;
 }
 
 /**
  * 判断SD卡上的文件是否存在
  * @param filename --文件名
  * @return
  */
 public boolean isFileExist(String filename){
  File file = new File(SDPATH+filename);
  return file.exists();
 }
 
 /**
  * 将一个InputStream里面的数据写入到SD卡中
  * @param path --这个参数是存储的路径
  * @param fileName --这个参数是存储的文件名
  * @param input --inputStream数据流
  * @return
  */
 public File write2SDFromInput(String path,String fileName,InputStream input){
  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) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  finally{
   try {
    output.close();
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  return file;
 }
}