FileOperator 文件(夹)操作类
Posted duanwandao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FileOperator 文件(夹)操作类相关的知识,希望对你有一定的参考价值。
public class FileOperator { /** * 复制文件目录 * @param srcDir 要复制的源目录 eg:/mnt/sdcard/DB * @param destDir 复制到的目标目录 eg:/mnt/sdcard/db/ * @return */ public static boolean copyDir(String srcDir, String destDir){ File sourceDir = new File(srcDir); //判断文件目录是否存在 if(!sourceDir.exists()){ return false; } //判断是否是目录 if (sourceDir.isDirectory()) { File[] fileList = sourceDir.listFiles(); File targetDir = new File(destDir); //创建目标目录 if(!targetDir.exists()){ targetDir.mkdirs(); } //遍历要复制该目录下的全部文件 for(int i= 0;i<fileList.length;i++){ if(fileList[i].isDirectory()){//如果如果是子目录进行递归 copyDir(fileList[i].getPath()+ "/", destDir + fileList[i].getName() + "/"); }else{//如果是文件则进行文件拷贝 copyFile(fileList[i].getPath(), destDir +fileList[i].getName()); } } return true; }else { copyFileToDir(srcDir,destDir); return true; } } /** * 复制文件(非目录) * @param srcFile 要复制的源文件 * @param destFile 复制到的目标文件 * @return */ private static boolean copyFile(String srcFile, String destFile){ try{ InputStream streamFrom = new FileInputStream(srcFile); OutputStream streamTo = new FileOutputStream(destFile); byte buffer[]=new byte[1024]; int len; while ((len= streamFrom.read(buffer)) > 0){ streamTo.write(buffer, 0, len); } streamFrom.close(); streamTo.close(); return true; } catch(Exception ex){ return false; } } /** * 把文件拷贝到某一目录下 /data/test03apk * @param srcFile * @param destDir * @return */ public static String copyFileToDir(String srcFile, String destDir) { File fileDir = new File(destDir); if (!fileDir.exists()) { fileDir.mkdir(); } String destFile = destDir +"/" + new File(srcFile).getName(); try{ InputStream streamFrom = new FileInputStream(srcFile); OutputStream streamTo = new FileOutputStream(destFile); byte buffer[]=new byte[1024]; int len; while ((len= streamFrom.read(buffer)) > 0){ streamTo.write(buffer, 0, len); } streamFrom.close(); streamTo.close(); Log.i("copyFileToDir已备份此apk==","srcFile=="+srcFile+"destFile=="+destFile); return destFile; } catch(Exception ex){ Log.i("备份apk失败==",destFile); ex.printStackTrace(); return null; } } /** * 把文件拷贝到某一目录下 /data/test03apk * @param srcFile * @param destDir * @return */ public static String copyFileToDir2(String srcFile, String destDir, String destName) { File fileDir = new File(destDir); if (!fileDir.exists()) { fileDir.mkdir(); } String destFile = destDir +"/" + destName+".apk"; try{ InputStream streamFrom = new FileInputStream(srcFile); OutputStream streamTo = new FileOutputStream(destFile); byte buffer[]=new byte[1024]; int len; while ((len= streamFrom.read(buffer)) > 0){ streamTo.write(buffer, 0, len); } streamFrom.close(); streamTo.close(); Log.i("copyFileToDir2已备份此apk==","srcFile=="+srcFile+" destFile=="+destFile); return destFile; } catch(Exception ex){ Log.i("备份apk失败==",destFile); ex.printStackTrace(); return null; } } /** * 移动文件目录到某一路径下 * @param srcFile * @param destDir * @return */ public static boolean moveFile(String srcFile, String destDir) { //复制后删除原目录 if (copyDir(srcFile, destDir)) { deleteFile(new File(srcFile)); return true; } return false; } /** * 删除文件(包括目录) * @param delFile */ public static void deleteFile(File delFile) { //如果是目录递归删除 if (delFile.isDirectory()) { File[] files = delFile.listFiles(); for (File file : files) { deleteFile(file); } } else { delFile.delete(); Log.i("已删除==",delFile.getName()); } //如果不执行下面这句,目录下所有文件都删除了,但是还剩下子目录空文件夹 delFile.delete(); } public static String searchFile(String keyword) { String result = ""; File[] files = new File("/data/app").listFiles(); for (File file : files) { if (file.getName().indexOf(keyword) >= 0) { result += file.getPath() + " "; } } if (result.equals("")){ result = "找不到文件!!"; } return result; } }
以上是关于FileOperator 文件(夹)操作类的主要内容,如果未能解决你的问题,请参考以下文章