zoukankan      html  css  js  c++  java
  • Java对文件及文件夹的操作

    public class FileOperater { 
        // 验证字符串是否为正确路径名的正则表达式 
        private static String matches = "[A-Za-z]:\\[^:?"><*]*"; 
     
        // 通过 sPath.matches(matches) 方法的返回值判断是否正确 
        // sPath 为路径字符串 
        /** 
         * 根据路径删除指定的目录或文件,无论存在与否 
         *  
         * @param sPath 
         *            要删除的目录或文件 
         * @return 删除成功返回 true,否则返回 false。 
         */ 
        public static boolean DeleteFolder(String sPath) { 
            boolean flag = false; 
            File file = new File(sPath); 
            // 判断目录或文件是否存在 
            if (!file.exists()) { // 不存在返回 false 
                return flag; 
            } else { 
                // 判断是否为文件 
                if (file.isFile()) { // 为文件时调用删除文件方法 
                    return deleteFile(sPath); 
                } else { // 为目录时调用删除目录方法 
                    return deleteDirectory(sPath); 
                } 
            } 
        } 
     
        /** 
         * 删除单个文件 
         *  
         * @param sPath 
         *            被删除文件的文件名 
         * @return 单个文件删除成功返回true,否则返回false 
         */ 
        public static boolean deleteFile(String sPath) { 
            boolean flag = false; 
            File file = new File(sPath); 
            // 路径为文件且不为空则进行删除 
            if (file.isFile() && file.exists()) { 
                file.delete(); 
                flag = true; 
            } 
            return flag; 
        } 
     
        /** 
         * 删除目录(文件夹)以及目录下的文件 
         *  
         * @param sPath 
         *            被删除目录的文件路径 
         * @return 目录删除成功返回true,否则返回false 
         */ 
        public static boolean deleteDirectory(String sPath) { 
            // 如果sPath不以文件分隔符结尾,自动添加文件分隔符 
            if (!sPath.endsWith(File.separator)) { 
                sPath = sPath + File.separator; 
            } 
            File dirFile = new File(sPath); 
            // 如果dir对应的文件不存在,或者不是一个目录,则退出 
            if (!dirFile.exists() || !dirFile.isDirectory()) { 
                return false; 
            } 
            boolean flag = true; 
            // 删除文件夹下的所有文件(包括子目录) 
            File[] files = dirFile.listFiles(); 
            for (int i = 0; i < files.length; i++) { 
                // 删除子文件 
                if (files[i].isFile()) { 
                    flag = deleteFile(files[i].getAbsolutePath()); 
                    if (!flag) 
                        break; 
                } // 删除子目录 
                else { 
                    flag = deleteDirectory(files[i].getAbsolutePath()); 
                    if (!flag) 
                        break; 
                } 
            } 
            if (!flag) 
                return false; 
            // 删除当前目录 
            if (dirFile.delete()) { 
                return true; 
            } else { 
                return false; 
            } 
        } 
     
        public static boolean CreateFile(String destFileName) { 
            File file = new File(destFileName); 
            if (file.exists()) { 
                System.out.println("创建单个文件" + destFileName + "失败,目标文件已存在!"); 
                return false; 
            } 
            if (destFileName.endsWith(File.separator)) { 
                System.out.println("创建单个文件" + destFileName + "失败,目标不能是目录!"); 
                return false; 
            } 
            if (!file.getParentFile().exists()) { 
                System.out.println("目标文件所在路径不存在,准备创建。。。"); 
                if (!file.getParentFile().mkdirs()) { 
                    System.out.println("创建目录文件所在的目录失败!"); 
                    return false; 
                } 
            } 
            // 创建目标文件 
            try { 
                if (file.createNewFile()) { 
                    System.out.println("创建单个文件" + destFileName + "成功!"); 
                    return true; 
                } else { 
                    System.out.println("创建单个文件" + destFileName + "失败!"); 
                    return false; 
                } 
            } catch (Exception e) { 
                e.printStackTrace(); 
                System.out.println("创建单个文件" + destFileName + "失败!"); 
                return false; 
            } 
        } 
     
        public static boolean createDir(String destDirName) { 
            File dir = new File(destDirName); 
            if (dir.exists()) { 
                System.out.println("创建目录" + destDirName + "失败,目标目录已存在!"); 
                return false; 
            } 
            if (!destDirName.endsWith(File.separator)) 
                destDirName = destDirName + File.separator; 
            // 创建单个目录 
            if (dir.mkdirs()) { 
                System.out.println("创建目录" + destDirName + "成功!"); 
                return true; 
            } else { 
                System.out.println("创建目录" + destDirName + "成功!"); 
                return false; 
            } 
        } 
     
        public static String createTempFile(String prefix, String suffix, 
                String dirName) { 
            File tempFile = null; 
            try { 
                if (dirName == null) { 
                    // 在默认文件夹下创建临时文件 
                    tempFile = File.createTempFile(prefix, suffix); 
                    return tempFile.getCanonicalPath(); 
                } else { 
                    File dir = new File(dirName); 
                    // 如果临时文件所在目录不存在,首先创建 
                    if (!dir.exists()) { 
                        if (!FileOperater.createDir(dirName)) { 
                            System.out.println("创建临时文件失败,不能创建临时文件所在目录!"); 
                            return null; 
                        } 
                    } 
                    tempFile = File.createTempFile(prefix, suffix, dir); 
                    return tempFile.getCanonicalPath(); 
                } 
            } catch (Exception e) { 
                e.printStackTrace(); 
                System.out.println("创建临时文件失败" + e.getMessage()); 
                return null; 
            } 
        } 
     
        public static void main(String[] args) { 
    /* 
            FileOperater hfc = new FileOperater(); 
            String path = "D:\Abc\123\Ab1"; 
            boolean result = createDir(path); 
            System.out.println(result); 
            path = "D:\Abc\124"; 
            result = hfc.DeleteFolder(path); 
            System.out.println(result); 
     
            // 创建目录 
            String dirName = "c:/test/test0/test1"; 
            createDir(dirName); 
            // 创建文件 
            String fileName = dirName + "/test2/testFile.txt"; 
            CreateFile(fileName); 
            // 创建临时文件 
            String prefix = "temp"; 
            String suffix = ".txt"; 
            for (int i = 0; i < 10; i++) { 
                System.out.println("创建了临时文件:" 
                        + createTempFile(prefix, suffix, dirName)); 
            }*/ 
            //deleteFile("c:/test/test0/test1/test2/testFile.txt"); 
            //deleteDirectory("c:/test/"); 
        }  
    } 
     
    积跬步以致千里,积小流以成江海。
    2016年5月之前的博文发布于51cto,链接地址:shamrock.blog.51cto.com
    2016年5月之后博文发布与cnblogs上。
    Github地址 https://github.com/umgsai
    Keep moving~!!!
  • 相关阅读:
    各国语言缩写列表,各国语言缩写-各国语言简称,世界各国域名缩写
    How to see log files in MySQL?
    git 设置和取消代理
    使用本地下载和管理的免费 Windows 10 虚拟机测试 IE11 和旧版 Microsoft Edge
    在Microsoft SQL SERVER Management Studio下如何完整输出NVARCHAR(MAX)字段或变量的内容
    windows 10 x64系统下在vmware workstation pro 15安装macOS 10.15 Catelina, 并设置分辨率为3840x2160
    在Windows 10系统下将Git项目签出到磁盘分区根目录的方法
    群晖NAS(Synology NAS)环境下安装GitLab, 并在Windows 10环境下使用Git
    使用V-2ray和V-2rayN搭建本地代理服务器供局域网用户连接
    windows 10 专业版安装VMware虚拟机碰到的坑
  • 原文地址:https://www.cnblogs.com/umgsai/p/3908122.html
Copyright © 2011-2022 走看看