package com.vanco.abplayer.util; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.os.Environment; /** * 文件管理类 在以后的开发中也可以使用这个工具类,提高代码的利用性 * 只要是对SD卡的操作 * 1、获取SD卡路径 getSDPATH * 2、在SD卡上根据传入的目录名创建目录 createSDDir * 3、在创建上目录后可以在该目录上创建文件 createSDFile * 4、检测文件是否存在 isFileExist * 5、将一个InputStream写入到SD卡中 write2SDFromInput * 6、将一个字符流写入到SD卡 write2SDFromWrite * 注:如果要写入SD卡,只要调用write2SDFromInput函数即可 * @author Administrator * */ public class FileUitl { private static String SDPATH; public FileUitl(){ //得到当前设备外部存储设备的目录 SDPATH = Environment.getExternalStorageDirectory() + File.separator; } /** * 获取当前SD卡的根目录 * @return */ public String getSDPATH(){ return SDPATH; } /** * SD卡上创建目录 */ public File createSDDir(String dirName){ File dir = new File(SDPATH + dirName); System.out.println("createSDDir " + SDPATH + dirName); dir.mkdir(); return dir; } /** * SD卡上创建文件 */ public File createSDFile(String fileName)throws IOException{ File file = new File(SDPATH + fileName); System.out.println("createSDFile " + SDPATH + fileName); file.createNewFile(); return file; } /** * 判断SD卡上的文件是否存在 */ public boolean isFileExist(String fileName){ File file = new File(SDPATH + fileName); return file.exists(); } /** * 将一个InputStream字节流写入到SD卡中 */ public File write2SDFromInput(String Path, String FileName, InputStream input){ File file = null; OutputStream output = null; //创建一个写入字节流对象 try{ createSDDir(Path); //根据传入的路径创建目录 file = createSDFile(Path + FileName); //根据传入的文件名创建 output = new FileOutputStream(file); byte buffer[] = new byte[4 * 1024]; //每次读取4K int num = 0; //需要根据读取的字节大小写入文件 while((num = (input.read(buffer))) != -1){ output.write(buffer, 0, num); } output.flush(); //清空缓存 }catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally{ try{ output.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } return file; } /** * 把传入的字符流写入到SD卡中 * @param Path * @param FileName * @param input * @return */ public File write2SDFromWrite(String Path, String FileName, BufferedReader input){ File file = null; FileWriter output = null; //创建一个写入字符流对象 BufferedWriter bufw = null; try{ createSDDir(Path); //根据传入的路径创建目录 file = createSDFile(Path + FileName); //根据传入的文件名创建 output = new FileWriter(file); bufw = new BufferedWriter(output); String line = null; while((line = (input.readLine())) != null){ System.out.println("line = " + line); bufw.write(line); bufw.newLine(); } bufw.flush(); //清空缓存 }catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally{ try{ bufw.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } return file; } }