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+"\ndestFile=="+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() + "\n";
            }
        }
        if (result.equals("")){
            result = "找不到文件!!";
        }
        return result;

    }
}

原文地址:https://www.cnblogs.com/duanwandao/p/9625429.html

时间: 2024-07-30 06:35:36

FileOperator 文件(夹)操作类的相关文章

c# 封装的文件夹操作类之复制文件夹

c#  封装的文件夹操作类之复制文件夹 一.复制文件夹原理: 1.递归遍历文件夹 2.复制文件 二.FolderHelper.cs 1 /// <summary> 2 /// 文件夹操作类 3 /// </summary> 4 public static class FolderHelper 5 { 6 /// <summary> 7 /// 复制文件夹 8 /// </summary> 9 /// <param name="sourceFo

C#_基础_文件夹操作类Directory(十七)

1 //using System.IO; 2 ///Directory:操作文件夹/目录的类,Directory是静态类 3 ///创建文件夹 4 Directory.CreateDirectory(@"D:\a"); 5 //注释:如果D盘中已经有了a文件夹,不会重新创建,不会覆盖 6 7 //删除文件夹 8 // FALSE :只能删除空文件夹,如果不是空文件夹会报错 9 Directory.Delete(@"D:\a",false); 10 //TTRUE:删

C#文件夹操作之Directory类和DirectoryInfo类

问题的由来 怎么样使用 Cocos2d-x 快速开发游戏,方法很简单,你可以看看其自带的例程,或者从网上搜索教程,运行起第一个HelloWorld,然后在 HelloWorld 里面写相关逻辑代码,添加我们的层.精灵等 ~ 我们并不一定需要知道 Cocos2d-x 是如何运行或者在各种平台之上运行,也不用知道 Cocos2d-x 的游戏是如何运行起来的,它又是如何渲染界面的 ~~~ 两个入口 程序入口的概念是相对的,AppDelegate 作为跨平台程序入口,在这之上做了另一层的封装,封装了不同

CFileDialog(文件夹对话框类)和CFontDialog(字体设置对话框类)的使用学习

CFileDialog(文件夹对话框类) 主要用于文件的保存,另存,打开,关闭等功能 功能“另存为”的实现: 1 void CTXTDlg::OnFileSaveas() 2 { 3 LPCTSTR szFilter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||"; //过滤器设置,注意格式 4 CFileDialog fd(FALSE,"txt",NULL,OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST| /

iOS开发——Swift篇&amp;文件,文件夹操作

文件,文件夹操作 ios开发经常会遇到读文件,写文件等,对文件和文件夹的操作,这时就可以使用NSFileManager,NSFileHandle等类来实现. 下面总结了各种常用的操作: 1,遍历一个目录下的所有文件 1 //假设用户文档下有如下文件和文件夹[test1.txt,fold1/test2.txt] 2 let manager = NSFileManager.defaultManager() 3 let urlForDocument = manager.URLsForDirectory

文件及文件夹操作

文件及文件夹操作: C/S:WinForm可以操作客户端文件 Client ServerB/S:Brower Server 命名空间:using system .IO; 1. File类: 创建:File.Create(路径);创建文件,返回FileStream FileStream fs = File.Create(路径):之后需要关闭否则打不开,fs.close(); 删除:File.Delete(路径);无返回值 复制文件:File.Copy(源文件,目标文件); 剪切文件:File.Mo

C#文件夹操作

一.文件夹操作 Directory类,DirectoryInfo类.使用using System.IO命名空间 (一)创建文件夹 方法一: 1 private string path = @"F:\Text\ceshi"; 2 private void Create_Click(object sender, EventArgs e) 3 { 4 Directory.CreateDirectory(path); 5 } 方法二: 1 private string path = @&quo

常用的字符串文件文件夹操作

自己整理的一个类,需要的添加到工程中直接用就可以了. 1 /* ******* StrDirFile.h ********** 2 ********* 文件操作函数声明 ********** */ 3 4 /* author: autumoon */ 5 6 #ifndef _STR_DIR_FILE_ 7 #define _STR_DIR_FILE_ 8 9 #pragma comment(linker,"/manifestdependency:\"type='win32' name

linux —— 学习笔记(文件、文件夹操作)

目录:1.常用的文件文件夹操作 2.文件属性的设置 1.常用的文件文件夹操作 mkdir  创建文件夹 -p 如果指定 a/b/c 时 a .b 不存在,一起创建出来 cp       复制文件或文件夹 -r 复制文件夹 rmdir   删除空的文件夹 -p 类似于mkdir 沿途为空则一起删除 rm       删除文件或文件夹 -rf 递归静默删除 mv      移动文件(重命名)       如果目标和源 目录未改变,则移动的效果为重命名 2.文件属性的设置 chmod  改变文件的mo