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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章