File类中文件或目录的遍历、删除和复制

package day14;
    import java.io.File;
    import java.io.IOException;
    
    /*练习:
     *递归调用,遍历目录,并且对所有的目录都通用;
     *对目录执行以下操作:
     *①打印该目录下所有的子目录或文件
     *②删除该目录下的所有子目录或文件
     *③目录文件的复制(剪切)
     */
    
    
    public class FileCopy {
        //···········主方法入口······························
        public static void main(String[] args) {
            File file=new File("G:\\a");
            findFile(file);
            deleteFile(file);
            try {
                copyFile(file,new File("F:\\"));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        /*
         *①获取目录下的所有子目录和子文件
         */
        private static void findFile(File file){
            if(file.isDirectory()){
                File[] files = file.listFiles();
                for(File f:files){
                    findFile(f);//递归调用
                }
            }
            System.out.println(file.getPath());
        }
        
        
        /*
         * ②目录的删除,并且通用所有的目录或文件
         */
        private static void deleteFile(File file){
            if(file.isDirectory()){
                //获取目录下的所有子目录和子文件
                File[] files = file.listFiles();
                for(File f:files){
                    deleteFile(f);//递归调用
                }
            }
            System.out.println(file.delete());//输入为布尔值表示文件是否删除成功
        }
        
        /*
         *③目录或文件的复制(剪切)
         *  方法中的参数 copyFile:所要复制文件或目录
         *                 endFile:保存位置
         */
        private static void copyFile(File copyFile,File endFile) throws IOException{
            if(copyFile.exists()){
                String newPath = endFile.getPath() + "\\" + copyFile.getName();
                                     //windows下用“\\”,也可以使用File.separator代替
                File newPathFile = new File(newPath);
                if(copyFile.isDirectory()){//测试此抽象路径名表示的文件是否是一个目录
                    newPathFile.mkdirs();
                    //递归调用
                    File[] files = copyFile.listFiles();
                    for(File f : files){
                        copyFile(f, newPathFile);
                    }
                }else{//否则它就是文件,则直接用拼接路径创建文件。
                    newPathFile.createNewFile();
                }
            }
        }
    }
        
/*注意:File类中的方法length()获得的是文件的字节大小。
 *     File fie = new File();该过程并不创建文件,只是创建了一个文件的实例。
 *                创建文件需要用fie.creatNewFile(); 该返回类型为boolean。
 */


你可能感兴趣的:(遍历,复制,File类,文件或目录的删除,递归的使用。)