Ottieni la directory di lavoro corrente in Java

1. Panoramica

È un compito facile ottenere la directory di lavoro corrente in Java, ma sfortunatamente non è disponibile alcuna API diretta nel JDK per farlo.

In questo tutorial impareremo come ottenere la directory di lavoro corrente in Java con java.lang. System , java.io.File, java.nio.file.FileSystems e java.nio.file.Paths .

2. Sistema

Cominciamo con la soluzione standard che utilizza System # getProperty , assumendo che il nome della nostra directory di lavoro corrente sia Baeldung in tutto il codice:

static final String CURRENT_DIR = "Baeldung"; @Test void whenUsingSystemProperties_thenReturnCurrentDirectory() { String userDirectory = System.getProperty("user.dir"); assertTrue(userDirectory.endsWith(CURRENT_DIR)); }

Abbiamo utilizzato una chiave di proprietà incorporata in Java user.dir per recuperare la directory di lavoro corrente dalla mappa delle proprietà del sistema . Questa soluzione funziona su tutte le versioni di JDK.

3. File

Vediamo un'altra soluzione utilizzando java.io.File :

@Test void whenUsingJavaIoFile_thenReturnCurrentDirectory() { String userDirectory = new File("").getAbsolutePath(); assertTrue(userDirectory.endsWith(CURRENT_DIR)); }

Qui, il file # getAbsolutePath utilizza internamente System # getProperty per ottenere il nome della directory, simile alla nostra prima soluzione. È una soluzione non standard per ottenere la directory di lavoro corrente e funziona con tutte le versioni di JDK.

4. FileSystems

Un'altra valida alternativa sarebbe quella di utilizzare la nuova API java.nio.file.FileSystems :

@Test void whenUsingJavaNioFileSystems_thenReturnCurrentDirectory() { String userDirectory = FileSystems.getDefault() .getPath("") .toAbsolutePath() .toString(); assertTrue(userDirectory.endsWith(CURRENT_DIR)); }

Questa soluzione utilizza la nuova API Java NIO e funziona solo con JDK 7 o versioni successive .

5. Percorsi

E infine, vediamo una soluzione più semplice per ottenere la directory corrente utilizzando l' API java.nio.file.Paths :

@Test void whenUsingJavaNioPaths_thenReturnCurrentDirectory() { String userDirectory = Paths.get("") .toAbsolutePath() .toString(); assertTrue(userDirectory.endsWith(CURRENT_DIR)); }

Qui, Paths # get internamente usa FileSystem # getPath per recuperare il percorso. Utilizza la nuova API Java NIO, quindi questa soluzione funziona solo con JDK 7 o versioni successive .

6. Conclusione

In questo tutorial, abbiamo esplorato quattro diversi modi per ottenere la directory di lavoro corrente in Java. Le prime due soluzioni funzionano su tutte le versioni di JDK mentre le ultime due funzionano solo con JDK 7 o versioni successive.

Si consiglia di utilizzare la soluzione di sistema poiché è efficiente e semplice, possiamo semplificarla avvolgendo questa chiamata API in un metodo di utilità statico e accedendovi direttamente.

Il codice sorgente di questo tutorial è disponibile su GitHub: è un progetto basato su Maven, quindi dovrebbe essere facile da importare ed eseguire così com'è.