Android的文件、文件夹操作是比较常见的应用,文件操作涉及到拷贝、文件夹拷贝、文件转字节数组、字节数组转文件等。

public class FileUtil {/** * 复制文件 * @param fromFile 源文件 * @param toFile 目标文件 * @param rewrite 是否覆盖 */public static void copyfile(File fromFile, File toFile,Boolean rewrite){if (!fromFile.exists()) {return;}if (!fromFile.isFile()) {return ;}if (!fromFile.canRead()) {return ;}if (!toFile.getParentFile().exists()) {toFile.getParentFile().mkdirs();}if (toFile.exists() && rewrite) {toFile.delete();}try {java.io.FileInputStream fosfrom = new java.io.FileInputStream(fromFile);java.io.FileOutputStream fosto = new FileOutputStream(toFile);byte bt[] = new byte[1024];int c;while ((c = fosfrom.read(bt)) > 0) {fosto.write(bt, 0, c); //将内容写到新文件当中}fosfrom.close();fosto.close();} catch (Exception ex) {MyLog.e(FileUtil.class, ex.getMessage());}}/**  * 复制整个文件夹内容  * @param oldPath String 原文件路径 如:c:/fqf  * @param newPath String 复制后路径 如:f:/fqf/ff  * @return boolean  */ public void copyFolder(String oldPath, String newPath) { try { (new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹 File a=new File(oldPath); String[] file=a.list(); File temp=null; for (int i = 0; i < file.length; i++) { if(oldPath.endsWith(File.separator)){ temp=new File(oldPath+file[i]); } else{ temp=new File(oldPath+File.separator+file[i]); } if(temp.isFile()){ FileInputStream input = new FileInputStream(temp); FileOutputStream output = new FileOutputStream(newPath + "/" + (temp.getName()).toString()); byte[] b = new byte[1024 * 5]; int len; while ( (len = input.read(b)) != -1) { output.write(b, 0, len); } output.flush(); output.close(); input.close(); } if(temp.isDirectory()){//如果是子文件夹 copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]); } } } catch (Exception e) { MyLog.e(FileUtil.class, e==null?"":e.getMessage());} }public static void CopyAssets(Context context,String assetDir, String dir) {String[] files;try {files = context.getResources().getAssets().list(assetDir);} catch (IOException e1) {MyLog.e(FileUtil.class, "cannot get assets.");return;}File mWorkingPath = new File(dir);// if this directory does not exists, make one.if (!mWorkingPath.exists()) {if (!mWorkingPath.mkdirs()) {MyLog.e(FileUtil.class, "cannot create directory.");}}for (int i = 0; i < files.length; i++) {try {String fileName = files[i];// we make sure file name not contains '.' to be a folder.if (!fileName.contains(".")) {if (0 == assetDir.length()) { CopyAssets(context,fileName, dir + fileName + "/");} else {CopyAssets(context,assetDir + "/" + fileName, dir + fileName+ "/");}continue;}File outFile = new File(mWorkingPath, fileName);if (outFile.exists())outFile.delete();InputStream in = null;if (0 != assetDir.length())in = context.getAssets().open(assetDir + "/" + fileName);elsein = context.getAssets().open(fileName);OutputStream out = new FileOutputStream(outFile);// Transfer bytes from in to outbyte[] buf = new byte[1024];int len;while ((len = in.read(buf)) > 0) {out.write(buf, 0, len);}in.close();out.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}public static boolean fileIsExists(String filePath){File f=new File(filePath);if(!f.exists()){return false;}return true;}/** * 获得指定文件的byte数组 * @param filePath * @return */public static byte[] getBytes(String filePath,String fileName){  byte[] buffer = null;  try {  File file = new File(filePath+"\\"+fileName);  FileInputStream fis = new FileInputStream(file);  ByteArrayOutputStream bos = new ByteArrayOutputStream(1024*1024);  byte[] b = new byte[1000];  int n;  while ((n = fis.read(b)) != -1) {  bos.write(b, 0, n);  }  fis.close();  bos.close();  buffer = bos.toByteArray();  } catch (FileNotFoundException e) {  e.printStackTrace();  } catch (IOException e) {  e.printStackTrace();  }  return buffer;  }  /** * 根据byte数组,生成文件 * @param bfile * @param filePath * @param fileName */public static void getFile(byte[] bfile, String filePath,String fileName) {          BufferedOutputStream bos = null;          FileOutputStream fos = null;          File file = null;          try {              File dir = new File(filePath);              if(!dir.exists()&&dir.isDirectory()){//判断文件目录是否存在                  dir.mkdirs();              }              file = new File(filePath+"\\"+fileName);              fos = new FileOutputStream(file);              bos = new BufferedOutputStream(fos);              bos.write(bfile);          } catch (Exception e) {              e.printStackTrace();          } finally {              if (bos != null) {                  try {                      bos.close();                  } catch (IOException e1) {                      e1.printStackTrace();                  }              }              if (fos != null) {                  try {                      fos.close();                  } catch (IOException e1) {                      e1.printStackTrace();                  }              }          }      }  }

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. android 资源如何查找(AaptAssets)分析
  6. 第一个android程序HelloWorld
  7. Android(安卓)Studio如何导入第三方库文件
  8. Android中XML文件解析
  9. [Android]文件操作模式与SDCard读写访问

随机推荐

  1. Android——操作摄像头、图片合成
  2. 【转】善用Android预定义样式来为我们的
  3. 那些年收藏的技术文章(一)-CSDN篇
  4. android 中文 api (43) ―― Chronometer
  5. 在android studio 2.1 实现简单的ndk
  6. Android(安卓)liveData 和ViewModel 使用
  7. android万能驱动制作方法
  8. Android从文件目录中写入和读取图片
  9. Android 电话的反射调用机制实现静默接听
  10. android Intent用法归纳