您的位置:首页 > 移动开发 > Android开发

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

2016-07-08 09:48 417 查看
转自 http://blog.csdn.net/u011520181/article/details/39555745 href="http://blog.csdn.net/u011520181/article/details/39555745" target=_blank>点击打开链接

import java.io.FileInputStream;  
import java.io.FileOutputStream;  
import java.io.InputStream;  
import java.io.OutputStream;  
/** 
 *  
 * @ClassName:  FileOperator    
 * @Description:  文件操作类,删除文件或文件目录 
 * @author: SAU_LC66 
 * @date:   2014-09-25 19:01   
 */  
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;  
        }  
    }  
      
      
    /** 
     * 把文件拷贝到某一目录下 
     * @param srcFile 
     * @param destDir 
     * @return 
     */  
    public static boolean 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();  
            return true;  
        } catch(Exception ex){  
            return false;  
        }  
    }  
  
      
    /** 
     * 移动文件目录到某一路径下 
     * @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();  
      }  
      //如果不执行下面这句,目录下所有文件都删除了,但是还剩下子目录空文件夹  
      delFile.delete();  
    }  
      
}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: