此程序可以将指定的文件夹及其子目录复制到指定文件下,并于30秒后删除。
可玩性较强!
/** * IO流:实现文件夹目录的复制和删除 * 复制成功, 30秒后删除复制完成的文件. */ public class IoTest1 { public static void main(String[] args) throws IOException, InterruptedException { Scanner sc = new Scanner(System.in); // 输入目标文件,全路径名 System.out.println("复制的文件:"); String str1 = sc.nextLine(); File source = new File(str1); // 指定目的地 System.out.println("此文件将复制到:"); String dest = sc.nextLine(); copyFile(source, dest); for (int i = 0; i < 30; i++) { System.out.println("删除倒计时:" + (i + 1)); Thread.sleep(1000); } // 删除复制完的文件 File file = new File(dest); delFile(file); } public static void copyFile(File source, String dest) throws IOException { //创建目的地文件夹 File destfile = new File(dest); if (!destfile.exists()) { destfile.mkdir(); } //如果source是文件夹,则在目的地址中创建新的文件夹 if (source.isDirectory()) { File file = new File(dest + "\\" + source.getName());//用目的地址加上source的文件夹名称,创建新的文件夹 file.mkdir(); //得到source文件夹的所有文件及目录 File[] files = source.listFiles(); if (files.length == 0) { return; } else { for (int i = 0; i < files.length; i++) { copyFile(files[i], file.getPath()); } } } //source是文件,则用字节输入输出流复制文件 else if (source.isFile()) { FileInputStream fis = new FileInputStream(source); //创建新的文件,保存复制内容,文件名称与源文件名称一致 File dfile = new File(dest + "\\" + source.getName()); if (!dfile.exists()) { dfile.createNewFile(); } FileOutputStream fos = new FileOutputStream(dfile); // 读写数据 定义数组 byte[] b = new byte[1024]; // 定义长度 int len; // 循环读取 while ((len = fis.read(b)) != -1) { // 写出数据 fos.write(b, 0, len); } //关闭资源 fos.close(); fis.close(); } } public static void delFile(File file){ File[] files = file.listFiles(); if (files != null){ for (int i = 0; i < files.length; i++) { if(files[i].isFile()){//如果是子文件 直接删除 files[i].delete(); }else if(files[i].isDirectory()){//如果是文件夹 递归调用删除方法 delFile(files[i]); } } } file.delete(); //最后删除空的文件夹 } }