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);
}
}
}
}