1. 使用File类相关的方法 ,编写删除文件夹的方法
要求:既能删除空文件夹 也能删除非空文件夹
import java.io.File; public class Task1 { public static void main(String[] args) { File file = new File("E:\\test"); deleteFile(file); System.out.println("OVER..."); } public static void deleteFile(File file){ if (file.exists()){ if (file.isFile()){ // 是文件 直接删除 file.delete(); }else { // 文件夹 获取其中所有内容 File[] files = file.listFiles(); if (files.length != 0){ // 文件夹 非空 for (File f : files){ deleteFile(f); } // 上面的for循环能删除所有文件 剩下空文件夹 删除即可 file.delete(); // 删除空文件夹 }else { // 空文件夹 删除 file.delete(); } } }else { System.out.println("文件不存在..."); } } }
2. 使用绝对路径,在D盘创建一个testIO文件夹,然后再testIO文件中创建一个1.txt文件中;
使用相对路径,在当前项目下创建一个testIO文件夹,然后再testIO文件中创建一个2.txt文件中
import java.io.File; import java.io.IOException; public class Task2 { public static void main(String[] args) throws IOException { File file = new File("D:\\testIO"); file.mkdir(); File file1 = new File(file , "1.txt"); file1.createNewFile(); File file2 = new File("testIO"); file2.mkdir(); File file3 = new File(file2 , "2.txt"); file3.createNewFile(); } }
3. 文件夹的复制
提示:结合 File类 和 字节输入输出流 相关的方法
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.lang.reflect.Field; public class Task3{ public static void main(String[] args) throws Exception { File src = new File("E:\\test"); File target = new File("E:\\test_copy"); copyDir(src , target); } /** * 文件夹&文件的复制 * @param src 要复制的文件夹&文件 * @param target 复制完成的新文件夹&文件 */ public static void copyDir(File src , File target) throws Exception { // 获取src中所有的内容 if (src.isFile()){ // 是文件 直接复制 FileInputStream fis = new FileInputStream(src); FileOutputStream fos = new FileOutputStream(target); int readNum = -1; while ((readNum = fis.read()) != -1){ fos.write(readNum); } fis.close(); fos.close(); }else { // 是文件夹 则遍历 target.mkdir(); // 创建目标文件夹 File[] files = src.listFiles(); for (File f : files){ File targetFile = new File(target , f.getName()); // System.out.println(targetFile.getAbsolutePath()); copyDir(f , targetFile); } } } }