Crea una directory in Java

1. Panoramica

La creazione di una directory con Java è piuttosto semplice. Il linguaggio ci fornisce due metodi che ci consentono di creare una singola directory o più directory annidate: mkdir () e mkdirs () .

In questo tutorial vedremo come si comportano entrambi.

2. Creare una singola directory

Cominciamo con la creazione di una singola directory.

Per i nostri scopi, utilizzeremo la directory temporanea dell'utente . Possiamo cercarlo con System.getProperty ("java.io.tmpdir") .

Passeremo questo percorso a un oggetto File Java , che rappresenterà la nostra directory temporanea:

private static final File TEMP_DIRECTORY = new File(System.getProperty("java.io.tmpdir"));

Ora creiamo una nuova directory al suo interno. Otterremo ciò chiamando il metodo File :: mkdir su un nuovo oggetto File che rappresenta la directory da creare:

File newDirectory = new File(TEMP_DIRECTORY, "new_directory"); assertFalse(newDirectory.exists()); assertTrue(newDirectory.mkdir());

Per assicurarci che la nostra directory non esista ancora, abbiamo prima usato il metodo exist () .

Quindi abbiamo chiamato il metodo mkdir () che ci dice se la creazione della directory è riuscita o meno. Se la directory esistesse già, il metodo avrebbe restituito false .

Se facciamo di nuovo le stesse chiamate:

assertTrue(newDirectory.exists()); assertFalse(newDirectory.mkdir());

Quindi, come previsto, il metodo restituisce false alla seconda chiamata.

Inoltre , il metodo mkdir () non solo restituisce false quando la directory esiste già, ma anche in alcune altre situazioni. Ad esempio, potrebbe esistere un file con il nome della directory che vogliamo creare. Oppure potremmo non avere i permessi per creare questa directory.

Con questo in mente, dobbiamo trovare un modo per assicurarci che la nostra directory esista alla fine, o l'abbiamo creata o fosse già lì. A tale scopo, potremmo usare il metodo isDirectory () :

newDirectory.mkdir() || newDirectory.isDirectory()

In questo modo, ci assicuriamo che la directory di cui abbiamo bisogno sia lì.

3. Creare più directory nidificate

Quello che abbiamo visto finora funziona bene su una singola directory, ma cosa succede se vogliamo creare più directory annidate?

Nel seguente esempio, vedremo che File :: mkdir non funziona per questo:

File newDirectory = new File(TEMP_DIRECTORY, "new_directory"); File nestedDirectory = new File(newDirectory, "nested_directory"); assertFalse(newDirectory.exists()); assertFalse(nestedDirectory.exists()); assertFalse(nestedDirectory.mkdir());

Poiché new_directory non esiste, mkdir non crea la nested_directory sottostante .

Tuttavia, la classe File ci fornisce un altro metodo per ottenere ciò: mkdirs () . Questo metodo si comporterà come mkdir () ma creerà anche tutte le directory padre inesistenti.

Nel nostro esempio precedente, ciò significherebbe creare non solo nested_directory , ma anche new_directory.

Si noti che fino ad ora abbiamo utilizzato il costruttore File (File, String) , ma possiamo anche usare il costruttore File (String) e passare il percorso completo del nostro file utilizzando File.separator per separare le diverse parti del percorso:

File newDirectory = new File(System.getProperty("java.io.tmpdir") + File.separator + "new_directory"); File nestedDirectory = new File(newDirectory, "nested_directory"); assertFalse(newDirectory.exists()); assertFalse(nestedDirectory.exists()); assertTrue(nestedDirectories.mkdirs());

Come possiamo vedere, le directory vengono create come previsto. Inoltre, il metodo restituisce true solo quando viene creata almeno una directory. Per quanto riguarda il metodo mkdir () , restituirà false negli altri casi.

Quindi questo significa che il metodo mkdirs () utilizzato su una directory i cui genitori esistono funzionerà allo stesso modo del metodo mkdir () .

4. Conclusione

In questo articolo, abbiamo visto due metodi che ci consentono di creare directory in Java. Il primo, mkdir () , mira alla creazione di una singola directory, a condizione che i suoi genitori esistano già. Il secondo, mkdirs () , è in grado di creare una directory così come i suoi genitori inesistenti.

Il codice di questo articolo può essere trovato sul nostro GitHub.