Android 手机sdcard目录或文件的拷贝、移动、删除(递归)

本文介绍了一个Java类,用于实现文件及目录的复制与移动功能。通过递归方式处理目录内的文件,支持从一个位置复制到另一个位置,并能将文件移动到指定目录。

转自 http://blog.youkuaiyun.com/u011520181/article/details/39555745点击打开链接

  1. import java.io.FileInputStream;  
  2. import java.io.FileOutputStream;  
  3. import java.io.InputStream;  
  4. import java.io.OutputStream;  
  5. /** 
  6.  *  
  7.  * @ClassName:  FileOperator    
  8.  * @Description:  文件操作类,删除文件或文件目录 
  9.  * @author: SAU_LC66 
  10.  * @date:   2014-09-25 19:01   
  11.  */  
  12. public class FileOperator {  
  13.   
  14.     /** 
  15.      * 复制文件目录 
  16.      * @param srcDir 要复制的源目录 eg:/mnt/sdcard/DB 
  17.      * @param destDir 复制到的目标目录 eg:/mnt/sdcard/db/ 
  18.      * @return  
  19.      */  
  20.     public static boolean copyDir(String srcDir, String destDir){  
  21.         File sourceDir = new File(srcDir);  
  22.         //判断文件目录是否存在  
  23.         if(!sourceDir.exists()){  
  24.             return false;  
  25.         }  
  26.         //判断是否是目录  
  27.         if (sourceDir.isDirectory()) {  
  28.             File[] fileList = sourceDir.listFiles();  
  29.             File targetDir = new File(destDir);  
  30.             //创建目标目录  
  31.             if(!targetDir.exists()){  
  32.                 targetDir.mkdirs();  
  33.             }  
  34.             //遍历要复制该目录下的全部文件  
  35.             for(int i= 0;i<fileList.length;i++){  
  36.                 if(fileList[i].isDirectory()){//如果如果是子目录进行递归  
  37.                     copyDir(fileList[i].getPath()+ "/",   
  38.                             destDir + fileList[i].getName() + "/");  
  39.                 }else{//如果是文件则进行文件拷贝  
  40.                     copyFile(fileList[i].getPath(), destDir +fileList[i].getName());  
  41.                 }  
  42.             }  
  43.             return true;  
  44.         }else {  
  45.             copyFileToDir(srcDir,destDir);  
  46.             return true;  
  47.         }  
  48.     }  
  49.       
  50.       
  51.     /** 
  52.      * 复制文件(非目录) 
  53.      * @param srcFile 要复制的源文件   
  54.      * @param destFile 复制到的目标文件  
  55.      * @return 
  56.      */  
  57.     private static boolean copyFile(String srcFile, String destFile){  
  58.         try{  
  59.             InputStream streamFrom = new FileInputStream(srcFile);  
  60.             OutputStream streamTo = new FileOutputStream(destFile);  
  61.             byte buffer[]=new byte[1024];  
  62.             int len;  
  63.             while ((len= streamFrom.read(buffer)) > 0){  
  64.                 streamTo.write(buffer, 0, len);  
  65.             }  
  66.             streamFrom.close();  
  67.             streamTo.close();  
  68.             return true;  
  69.         } catch(Exception ex){  
  70.             return false;  
  71.         }  
  72.     }  
  73.       
  74.       
  75.     /** 
  76.      * 把文件拷贝到某一目录下 
  77.      * @param srcFile 
  78.      * @param destDir 
  79.      * @return 
  80.      */  
  81.     public static boolean copyFileToDir(String srcFile, String destDir){  
  82.         File fileDir = new File(destDir);  
  83.         if (!fileDir.exists()) {  
  84.             fileDir.mkdir();  
  85.         }  
  86.         String destFile = destDir +"/" + new File(srcFile).getName();  
  87.         try{  
  88.             InputStream streamFrom = new FileInputStream(srcFile);  
  89.             OutputStream streamTo = new FileOutputStream(destFile);  
  90.             byte buffer[]=new byte[1024];  
  91.             int len;  
  92.             while ((len= streamFrom.read(buffer)) > 0){  
  93.                 streamTo.write(buffer, 0, len);  
  94.             }  
  95.             streamFrom.close();  
  96.             streamTo.close();  
  97.             return true;  
  98.         } catch(Exception ex){  
  99.             return false;  
  100.         }  
  101.     }  
  102.   
  103.       
  104.     /** 
  105.      * 移动文件目录到某一路径下 
  106.      * @param srcFile 
  107.      * @param destDir 
  108.      * @return 
  109.      */  
  110.     public static boolean moveFile(String srcFile, String destDir) {  
  111.         //复制后删除原目录  
  112.         if (copyDir(srcFile, destDir)) {  
  113.             deleteFile(new File(srcFile));  
  114.             return true;  
  115.         }  
  116.         return false;  
  117.     }  
  118.   
  119.     /** 
  120.      * 删除文件(包括目录) 
  121.      * @param delFile 
  122.      */  
  123.     public static void deleteFile(File delFile) {  
  124.         //如果是目录递归删除  
  125.       if (delFile.isDirectory()) {  
  126.        File[] files = delFile.listFiles();  
  127.        for (File file : files) {  
  128.          deleteFile(file);  
  129.        }  
  130.       }else{  
  131.           delFile.delete();  
  132.       }  
  133.       //如果不执行下面这句,目录下所有文件都删除了,但是还剩下子目录空文件夹  
  134.       delFile.delete();  
  135.     }  
  136.       
  137. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值