import java.io.File;
import java.io.IOException;

import android.os.Environment;

public class FileUtils {
    /**
     * 检测SD卡是否存在
     */
    public static boolean checkSDcard() {
        return Environment.MEDIA_MOUNTED.equals(Environment
                .getExternalStorageState());
    }

    /**
     * 获取文件保存点
     */
    public static File getSaveFile(String fileNmae) {
        File file = null;
        try {
            file = new File(Environment.getExternalStorageDirectory()
                    .getCanonicalFile() + "/" + fileNmae);
        } catch (IOException e) {
        }
        return file;
    }

    /**
     * 从指定文件夹获取文件
     */
    public static File getSaveFile(String folder, String fileNmae) {
        File file = new File(getSavePath(folder), fileNmae);
        return file;
    }

    /**
     * 获取文件保存路径
     */
    public static String getSavePath(String folder) {
        return Environment.getExternalStorageDirectory() + "/" + folder;
    }
}
package paj.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;
public class FileUtils {
    /***
     * SD目录
     */
    private String SDCardRoot;
    //使用构造函数获得SD卡的目录
    public FileUtils() {
        //得到当前外部存储设备的目录名
        SDCardRoot = Environment.getExternalStorageDirectory().getAbsolutePath();
    }
    
    /***
     * 在SD卡上创建文件
     * @param fileName 文件名
     * @param dir 文件存储目录
     * @return 文件
     * @throws IOException
     */
    public File createFileInSDCard(String fileName , String dir) throws IOException{
        //File.separator是系统有关的默认名称分隔符“/”
        File file = new File(SDCardRoot+ File.separator + dir + File.separator + fileName);
        //System.out.println(file);
        file.createNewFile();
        return file;
    }
    
    /**
     * 在SD卡上创建目录
     * @param dir 目录名称
     * @return 返回目录
     */
    public File createSDDir(String dir)
    {
        File dirFile = new File(SDCardRoot +File.separator + dir + File.separator);
        //System.out.println(dirFile);
        dirFile.mkdirs();
        return dirFile;
    }
    
    /***
     * 判断文件是否存在
     * @param fileNameString 文件名
     * @param pathString 文件路径
     * @return 存在返回true 不存在返回false
     */
    public boolean isFileExist(String fileNameString , String path)
    {
        File file = new File(SDCardRoot + "/"+ path + File.separator + fileNameString);
        //System.out.println("isExist ->" + file);
        return file.exists();
    }
    
    /***
     * 将InputStream里面的数据写入到SD卡的文件中
     * @param path 文件的路径
     * @param fileNameString 文件名
     * @param inputStream 数据流
     * @return
     */
    public File write2SDFromInput(String path , String fileNameString , InputStream inputStream)
    {
        File file = null;
        OutputStream outputStream = null;
        try {
            createSDDir(path);
            file = createFileInSDCard(fileNameString, path);
            
            outputStream = new FileOutputStream(file);
            //创建一个4*1024大小的缓冲区
            byte buffer [] = new byte[4*1024];
            int temp;
            //循环读取InputStream里的数据
            while ((temp = inputStream.read(buffer)) != -1) {
                //把流按照buffer的大小写入到文件中
                outputStream.write(buffer, 0, temp);
                
            }
            //提交缓冲区的内容
            outputStream.flush();
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally{
            try {
                outputStream.close();
                
            } catch (Exception e2) {
                // TODO: handle exception
                e2.printStackTrace();
            }
        }
        
        return file;
        
    }
    
}

 

posted on 2014-05-13 14:26  青年程序猿  阅读(409)  评论(0)    收藏  举报