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