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

搞安卓开发一年多了,这是第一次写博客,以后会慢慢把以前的东西整理出来,给自己一个记录,也与广大网友一起分享和进步。写的一个关于文件操作的静态工具类,实现手机SD卡目录或文件的拷贝、移动、删除(递归)
</pre><pre name="code" class="java">import java.io.File;
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();
	}
	
}

最后注意在AndroidManifest.xml中注册权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


Demo源码下载

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值