Java 文件、文件夹删除

Java删除文件和文件夹

  1. delete 方法用于删除文件和空文件夹
  2. 如果想删除文件夹,必须保证文件夹中没有文件,也就是删除已有的文件或者文件夹
  3. 另一种删除一个非空文件夹的方法是Files.walkFileTree()方法
public class Test6 {
    /**
     *  演示删除文件
     * @param args
     */
    public static void main(String[] args) {
        // 获取文件分隔符
        String fileSeparator = System.getProperty("file.separator");
        // https://www.cnblogs.com/brucemengbm/p/7094039.html 获取各种系统信息
        String home = System.getProperty("user.home");
        //绝对路径
        String absoluteFilePath = home+fileSeparator+"file.txt";
        //通过绝对路径生成文件
        File file = new File(absoluteFilePath);
        if(file.delete()){
            System.out.println(absoluteFilePath +"文件被删除 deleted");
        }else System.out.println( absoluteFilePath +"文件不存在");

        //只提供文件名称
        file = new File("file.txt");
        if(file.delete()){
            System.out.println("file.txt 文件从工程根目录删除");
        }else System.out.println("文件 file.txt 不存在工程根目录");

        //相对目录
        file = new File("temp/file.txt");
        if(file.delete()){
            System.out.println("temp/file.txt 文件从工程根目录删除了");
        }else System.out.println("文件 temp/file.txt 在工程根目录不存在");

        //删除空目录
        file = new File("temp");
        if(file.delete()){
            System.out.println("temp 目录从工程根目录删除了");
        }else System.out.println("temp 目录不存在于工程根目录");

        //尝试删除有文件的文件夹
        file = new File(absoluteFilePath);
        if(file.delete()){
            System.out.println(home + "删除");
        }else System.out.println(home + "不存在或者不为空");
    }
}

Java 删除文件夹

/**
 *  演示删除文件夹,但是只适用于文件夹中只有文件,没有文件夹
 */
public class Test7 {
    public static void main(String[] args) {

        // 获取文件分隔符
        String fileSeparator = System.getProperty("file.separator");
        String home = System.getProperty("user.home");
        // 创建文件夹
        // 在home 中创建log文件添加文件
        File dir = new File(home + fileSeparator + "log");

        if(dir.isDirectory() == false) {
            System.out.println(" 不是文件夹 直接返回");
            return;
        }
        File[] listFiles = dir.listFiles();
        for(File file : listFiles){
            System.out.println("删除文件  "+file.getName());
            file.delete();
        }
        // 文件夹空了, 所示删除文件夹
        System.out.println("删除文件夹. 结果为 = "+dir.delete());
    }
}

Java 递归删除文件夹

/**
 *
 * 使用Java7 提供 的 Files 类,删除文件夹嵌套
 * 之前必须使用递归的方式
 */
public class Test8 {
    public static void main(String[] args) throws IOException {
        String fileSeparator = System.getProperty("file.separator");
        String home = System.getProperty("user.home");
        Path directory = Paths.get(home+fileSeparator+"log");
        Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attributes) throws IOException {
                Files.delete(file); 
                // 传入的都是文件
                return FileVisitResult.CONTINUE;
            }

            @Override
            public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
                // 传入的都是空文件夹
                Files.delete(dir); 
                return FileVisitResult.CONTINUE;
            }
        });
    }
}

参考

  • https://www.journaldev.com/830/java-delete-file-directory
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章