android 文件操作类简易总结

android 文件操作类(参考链接)

http://www.cnblogs.com/menlsh/archive/2013/04/02/2997084.html

package com.android.wang.androidstudio;
import org.apache.http.util.EncodingUtils;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.os.Environment;
import android.os.StatFs;
import android.text.format.Formatter;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * Created by Administrator on 2016/4/29.
 */
public class FileHelper {
    private Context context;
    private String SDPATH;//SD卡路径
    private String FILESPATH;//文件路径
    public FileHelper(Context context)
    {
        this.context= context;
        SDPATH= Environment.getExternalStorageDirectory().getPath();
        FILESPATH=this.context.getFilesDir().getPath();
    }
    public boolean SDCardState(){ //判断SD卡是否可读写
        if(Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)){//表示SDCard存在并且可以读写
            return true;
        }else{
            return false;
        }
    }
    public String SDCardPath() {//SDCard路径
        if (SDCardState()) {
            SDPATH = Environment.getExternalStorageDirectory().getPath();
            return SDPATH;
        } else {
            return null;
        }
    }
    @TargetApi(18)
    private String GetSDAvailableSize() {//获取SD可用内存大小
        long blockSize=0;
        long availableBlocks= 0;
        File path = Environment.getExternalStorageDirectory();
        StatFs stat = new StatFs(path.getPath());
        if(Build.VERSION.SDK_INT>Build.VERSION_CODES.GINGERBREAD)
        {
             blockSize = stat.getBlockSizeLong();
             availableBlocks = stat.getAvailableBlocksLong();
        }
        else {
            blockSize = stat.getBlockSize();
            availableBlocks = stat.getAvailableBlocks();
        }
        return Formatter.formatFileSize(context, blockSize * availableBlocks);
    }
    @TargetApi(18)
    private String GetSDTotalSize() { //获取SD总内存大小
        long blockSize = 0;
        long totalBlocks = 0;
        File path = Environment.getExternalStorageDirectory();
        StatFs stat = new StatFs(path.getPath());
        if(Build.VERSION.SDK_INT>Build.VERSION_CODES.GINGERBREAD)
        {
            blockSize = stat.getBlockSizeLong();
            totalBlocks = stat.getBlockCountLong();
        }
        else {
            blockSize = stat.getBlockSize();
            totalBlocks = stat.getBlockCount();
        }

        return Formatter.formatFileSize(context, blockSize * totalBlocks);
    }
    @TargetApi(18)
    private String getRomTotalSize() {//获取机身可用内存
        File path = Environment.getDataDirectory();
        StatFs stat = new StatFs(path.getPath());
        long blockSize = stat.getBlockSize();
        long totalBlocks = stat.getBlockCount();
        return Formatter.formatFileSize(context, blockSize * totalBlocks);
    }
    @TargetApi(18)
    private String getRomAvailableSize() { //获得机身可用内存
        File path = Environment.getDataDirectory();
        StatFs stat = new StatFs(path.getPath());
        long blockSize = stat.getBlockSize();
        long availableBlocks = stat.getAvailableBlocks();
        return Formatter.formatFileSize(context, blockSize * availableBlocks);
    }
    public File CreateDirOnSDCard(String dir)//在SD上创建目录
    {
        if(SDCardState()==true) {
            File dirFile = new File(SDPATH + File.separator + dir + File.separator);
            dirFile.mkdirs();//创建多级目录创建单级目录用mkdir();
            return dirFile;
        }
        else
        {
            return null;
        }
    }
    public File CreateFileOnSDCard(String fileName) throws IOException { //SD上创建文件(在类和方法后面用throws,直接抛出异常就要用到throw)

        File file = new File(SDPATH + File.separator +  fileName);
        if (!file.exists()) {

            file.createNewFile();

        }
        return file;
    }
    public File CreateFileOnSDCard(String dir,String fileName) throws IOException { //SD上的文件目录下创建文件(在类和方法后面用throws,直接抛出异常就要用到throw)

        File file = new File(SDPATH + File.separator + dir + File.separator +  fileName);
        if (!file.exists()) {
            file.createNewFile();

        }
        return file;
    }
    public boolean fileIsExists(String strFile)//判断文件是否存在
    {
        try
        {
            File f=new File(strFile);
            if(!f.exists())
            {
                return false;
            }
        }
        catch (Exception e)
        {
            return false;
        }
        return true;
    }
    public  File CreateDirOnRom(String dir)//在ROM上创建文件目录
    {
            File dirFile = new File(FILESPATH + File.separator+dir);
            dirFile.mkdirs();
            return dirFile;
    }
    public  File CreateFileOnRom(String fileName)throws IOException//在ROM上创建文件目录
    {
        File file = new File(FILESPATH  + File.separator +  fileName);
        if (!file.exists()) {
            file.createNewFile();
        }
        return file;
    }
    public void deleteFile(File file) { //删除文件或文件目录
        if (file.exists()) { // 判断文件是否存在
            if (file.isFile()) { // 判断是否是文件
                file.delete(); // 删除文件;
            } else if (file.isDirectory()) { // 否则如果它是一个目录
                File files[] = file.listFiles(); // 声明目录下所有的文件 files[];
                for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件
                    this.deleteFile(files[i]); // 把每个文件 用这个方法进行迭代
                }
            }
            file.delete();
        } else {
        }
    }
    public static String InputStreamTOString(InputStream in) throws Exception{
        int BUFFER_SIZE=4096;
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] data = new byte[BUFFER_SIZE];
        int count = -1;
        while((count = in.read(data,0,BUFFER_SIZE)) != -1)
            outStream.write(data, 0, count);

        data = null;
        return new String(outStream.toByteArray(),"ISO-8859-1");
    }
    public static InputStream StringTOInputStream(String in) throws Exception{

        ByteArrayInputStream is = new ByteArrayInputStream(in.getBytes("ISO-8859-1"));
        return is;
    }
    public File WriteDataToSDCard(String path, String fileName, String str)
    {
        File file = null;
        OutputStream output = null;
        try {
            InputStream data = StringTOInputStream(str);
            CreateDirOnSDCard(path);  //创建目录
            file = CreateFileOnSDCard(path,fileName );  //创建文件
            output = new FileOutputStream(file);
            byte buffer[] = new byte[2*1024];          //每次写2K数据
            int temp;
            while((temp = data.read(buffer)) != -1 )
            {
                output.write(buffer,0,temp);
            }
            output.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }
        finally{
            try {
                output.close();    //关闭数据流操作
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return file;
    }
    public String ReadSDFile1(String fileName) {

        StringBuffer sb = new StringBuffer();
        File file = new File(SDPATH + File.separator+ fileName);
        try {
            FileInputStream fis = new FileInputStream(file);
            int c;
            while ((c = fis.read()) != -1) {
                sb.append((char) c);
            }
            fis.close();

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }
        return sb.toString();

    }
    public String ReadSDFile2(String fileName) {

        String sb = new String();
        File file = new File(SDPATH + "//" + fileName);
        try {
            FileInputStream fis = new FileInputStream(file);
            int length = fis.available();
            byte[] buffer = new byte[length];
            fis.read(buffer);
            sb = EncodingUtils.getString(buffer, "UTF-8");
            fis.close();

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }
        return sb.toString();
    }
    //在默认Rom目录下创建文件并写数据(mang.txt,"内容")可在data/data/mang.txt
    public void WriteFileOnRom(String fileName,String writestr){
        try{
            FileOutputStream fout =context.openFileOutput(fileName,context.MODE_PRIVATE);
            byte [] bytes = writestr.getBytes();
            fout.write(bytes);
            fout.close();
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }

    //读数据
    public String ReadFileOnRom(String fileName) {
        String res="";
        try{
            FileInputStream fin = context.openFileInput(fileName);
            int length = fin.available();
            byte [] buffer = new byte[length];
            fin.read(buffer);
            res = EncodingUtils.getString(buffer, "UTF-8");
            fin.close();
        }
        catch(Exception e){
            e.printStackTrace();
        }
        return res;

    }
    //写数据到SD中的文件
    public void WriteFileSdcardFile(String fileName,String write_str) throws IOException{
        try{
            fileName=fileName+SDPATH;
            FileOutputStream fout = new FileOutputStream(fileName);
            byte [] bytes = write_str.getBytes();
            fout.write(bytes);
            fout.close();
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
    //读SD中的文件
    public String readFileSdcardFile(String fileName) throws IOException{
        String res="";
        if(SDCardState()==false)
        {
            res="NO";
            return res;
        }
        try{
            FileInputStream fin = new FileInputStream(fileName);
            int length = fin.available();
            byte [] buffer = new byte[length];
            fin.read(buffer);
            res = EncodingUtils.getString(buffer, "UTF-8");
            fin.close();
        }

        catch(Exception e){
            e.printStackTrace();
        }
        return res;
    }
    public String readSDFile(String fileName) throws IOException {

        File file = new File(fileName);
        String res="";
        FileInputStream fis = new FileInputStream(file);
        int length = fis.available();
        byte [] buffer = new byte[length];
        fis.read(buffer);
        res = EncodingUtils.getString(buffer, "UTF-8");
        fis.close();
        return res;
    }
    //写文件
    public void writeSDFile(String fileName, String write_str) throws IOException{

        File file = new File(fileName);

        FileOutputStream fos = new FileOutputStream(file);

        byte [] bytes = write_str.getBytes();

        fos.write(bytes);

        fos.close();
    }
}

  

posted @ 2016-04-29 16:12  名扬博客  阅读(382)  评论(0编辑  收藏  举报