java基础 File 递归删除文件夹中所有文件文件夹 目录(包含子目录)下的.java文件复制到e:/abc文件夹中, 并统计java文件的个数

File 递归删除文件夹中所有文件文件夹

package com.swift.kuozhan;

import java.io.File;
import java.util.Scanner;

/*键盘录入一个文件夹路径,删除该路径下的所有文件文件夹,包括自己。
要求:文件夹中包含有子文件夹*/

public class TheLat {

    public static void main(String[] args) {
        File dir = inputDir();
        delete(dir);
        
    }

    private static void delete(File dir) {
        for(File file:dir.listFiles()) {
            if(file.isDirectory()) {
                delete(file);
            }else {
                file.delete();
            }
        }
        dir.delete();
        System.out.println("整个文件夹及其中文件都被删除");
    }

    private static File inputDir() {

        System.out.println("请录入一个目录");
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        File file = new File(str);
        if (!file.exists()) {
            throw new RuntimeException("垓目录不存在!");
        }
        if (!file.isDirectory()) {
            throw new RuntimeException("输入的不是一个目录");
        }
        
        return file;
    }

}

又写了一遍

package com.swift.kuozhan;

import java.io.File;
import java.util.Scanner;

/*键盘录入一个文件夹路径,删除该路径下的所有文件夹。
要求:文件夹中包含有子文件夹*/

public class TheLat {

    public static void main(String[] args) {
        File dir = inputDir();
        delete(dir);
        
    }

    private static void delete(File dir) {
        for(File file:dir.listFiles()) {
            if(file.isDirectory()) {
                delete(file);
            }else {
                boolean success=file.delete();
                if(success) {
                    System.out.println("文件删除成功.");
                }else {
                    System.out.println("正在使用,删除失败");
                }
            }
        }
        boolean success=dir.delete();
        if(success) {
            System.out.println("目录中的文件夹及其中文件都被删除");
        }else {
            System.out.println("文件夹正在使用,删除失败");
        }
    }

    private static File inputDir() {

        System.out.println("请录入一个目录");
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        File file = new File(str);
        if (!file.exists()) {
            throw new RuntimeException("垓目录不存在!");
        }
        if (!file.isDirectory()) {
            throw new RuntimeException("输入的不是一个目录");
        }
        
        return file;
    }

}

找不同

====================================================================================================

package com.swift.test;

import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

/*从控制台获取输入的文件目录然后将该目录(包含子目录)下的.java文件复制到e:/abc文件夹中,
并统计java文件的个数.
提示:如果有相同的名称的文件,如果两个Test01.java,则拷贝到目标文件夹时只能有一个Test01.java,
另一个Test01.java要修改为另一个名称:该名称可随机生成,只要不重复即可.*/

public class CopyJavaFileCount {
    
    private static int sum=0;

    public static void main(String[] args) throws IOException {

        Scanner scan=new Scanner(System.in);
        String path = scan.nextLine();
        File src=new File(path);
        File dest=new File("d:/asdf");
        if(!dest.exists()) {
            dest.mkdirs();
        }
        copy(src,dest);
        System.out.println(".java文件的个数是"+sum);
    }

    private static void copy(File src, File dest) throws IOException {
        
        File[] files = src.listFiles(new FileFilter() {
            
            @Override
            public boolean accept(File pathname) {
                
                if(pathname.isDirectory()) {
                    try {
                        copy(pathname,dest);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(pathname.getName().toLowerCase().endsWith(".java")) {
                    return true;
                }
                return false;
            }
        });
        for(File file:files) {
            String name = file.getName();
            File destFile=new File(dest,name);
            copyFile(file,destFile);
            System.out.println(file);
        }
        sum=sum+files.length;
    }
    
    public static void copyFile(File file1,File file2) throws IOException{
        FileInputStream fis=new FileInputStream(file1);
//        2.创建字节输出流对象关联文件路径:D盘下的a.png
        FileOutputStream fos=new FileOutputStream(file2);
//        3.定义一个字节数组,用来存放读取到文件字节数
        byte[] buf=new byte[128];
        int len;
//        4.使用循环不断从字节输入流读取一个字节数组,每读取一个字节数组就利用输出流写出一个字节数组。
        while((len=fis.read(buf))!=-1) {
            fos.write(buf,0,len);
        }
        System.out.println("已经copy成功");
//        5.关闭流,释放资源
        fis.close();
        fos.close();
    }
}

 

posted @ 2018-03-04 21:09  Advancing-Swift  阅读(921)  评论(0编辑  收藏  举报