android中對sd卡的操作

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;
 }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章