V tomto příkladu se naučíme mazat prázdný adresář, neprázdný adresář a adresář s neprázdným podadresářem v Javě.
Abychom porozuměli tomuto příkladu, měli byste znát následující programovací témata Java:
- Třída souborů Java
- Java rekurze
Příklad 1: Program Java pro odstranění prázdného adresáře
import java.io.File; class Main ( public static void main(String() args) ( try ( // create a new file object File directory = new File("Directory"); // delete the directory boolean result = directory.delete(); if(result) ( System.out.println("Directory Deleted"); ) else ( System.out.println("Directory not Found"); ) ) catch (Exception e) ( e.getStackTrace(); ) ) )
Ve výše uvedeném příkladu jsme použili delete()
metodu File
třídy k odstranění adresáře s názvem Directory .
Zde, pokud je adresář přítomen, zobrazí se zpráva Directory Deleted . Jinak se zobrazí adresář nebyl nalezen .
Příklad 2: Odstranění neprázdného adresáře
Chcete-li v Javě odstranit neprázdný adresář, musíme nejprve odstranit všechny soubory přítomné v adresáři. Poté můžeme adresář odstranit.
import java.io.File; class Main ( public static void main(String() args) ( try ( // create a new file object File directory = new File("Directory"); // list all the files in an array File() files = directory.listFiles(); // delete each file from the directory for(File file : files) ( System.out.println(file + " deleted."); file.delete(); ) // delete the directory if(directory.delete()) ( System.out.println("Directory Deleted"); ) else ( System.out.println("Directory not Found"); ) ) catch (Exception e) ( e.getStackTrace(); ) ) )
Ve výše uvedeném příkladu jsme pomocí for-each
smyčky odstranili všechny soubory v adresáři. Jakmile jsou všechny soubory odstraněny, použili jsme delete()
metodu k odstranění adresáře.
Příklad 3: Rekurzivně odstranit neprázdný adresář
import java.io.File; class Main ( public static void deleteDirectory(File directory) ( // if the file is directory or not if(directory.isDirectory()) ( File() files = directory.listFiles(); // if the directory contains any file if(files != null) ( for(File file : files) ( // recursive call if the subdirectory is non-empty deleteDirectory(file); ) ) ) if(directory.delete()) ( System.out.println(directory + " is deleted"); ) else ( System.out.println("Directory not deleted"); ) ) public static void main(String() args) ( try ( // create a new file object File directory = new File("Directory"); Main.deleteDirectory(directory); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Zde předpokládejme, že máme neprázdný adresář s názvem Directory. Adresář obsahuje 2 soubory s názvem file1.txt a file2.txt a neprázdný podadresář s názvem Podadresář. Podadresář opět obsahuje soubor s názvem file11.txt.
Nyní, když spustíme program, dostaneme následující výstup.
Directory file1.txt is deleted Directory file2.txt is deleted Directory Subdirectory file11.txt is deleted Directory Subdirectory is deleted Directory is deleted
Zde jsou odstraněny první 2 soubory, poté rekurzivní funkce odstraní soubory uvnitř podadresáře. Jakmile je podadresář prázdný, bude odstraněn. A nakonec je adresář odstraněn.