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