Download de huidige werkdirectory in Java

1. Overzicht

Het is een gemakkelijke taak om de huidige werkdirectory in Java op te halen, maar helaas is er geen directe API beschikbaar in de JDK om dit te doen.

In deze zelfstudie leren we hoe u de huidige werkdirectory in Java kunt ophalen met java.lang.Systeem, java.io.File, java.nio.file.FileSystems, en java.nio.file.Paths.

2. Systeem

Laten we beginnen met de standaardoplossing met Systeem # getProperty, ervan uitgaande dat de naam van onze huidige werkdirectory is Baeldung door de hele code:

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

We hebben een in Java ingebouwde eigenschapssleutel gebruikt gebruiker.dir om de huidige werkdirectory op te halen uit het Systeem‘Onroerend goed kaart. Deze oplossing werkt in alle JDK-versies.

3. het dossier

Laten we een andere oplossing bekijken met java.io.File:

@Test ongeldig whenUsingJavaIoFile_thenReturnCurrentDirectory () {String userDirectory = nieuw bestand (""). GetAbsolutePath (); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }

Hier de Bestand # getAbsolutePath intern gebruikt Systeem # getProperty om de directorynaam te krijgen, vergelijkbaar met onze eerste oplossing. Het is een niet-standaard oplossing om de huidige werkmap te krijgen, en het werkt in alle JDK-versies.

4. Bestandssystemen

Een ander geldig alternatief zou zijn om het nieuwe te gebruiken java.nio.file.FileSystems API:

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

Deze oplossing maakt gebruik van de nieuwe Java NIO API en werkt alleen met JDK 7 of hoger.

5. Paden

En tot slot, laten we een eenvoudigere oplossing bekijken om de huidige directory te gebruiken java.nio.file.Paths API:

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

Hier, Paden # get intern gebruikt FileSystem # getPath om het pad op te halen. Het maakt gebruik van de nieuwe Java NIO API, dus deze oplossing werkt alleen met JDK 7 of hoger.

6. Conclusie

In deze tutorial hebben we vier verschillende manieren onderzocht om de huidige werkdirectory in Java te krijgen. De eerste twee oplossingen werken in alle versies van de JDK, terwijl de laatste twee alleen met JDK werken 7 of hoger.

We raden aan om de Systeem oplossing omdat het efficiënt en ongecompliceerd is, kunnen we het vereenvoudigen door deze API-aanroep in een statische hulpprogramma-methode te verpakken en er rechtstreeks toegang toe te krijgen.

De broncode voor deze tutorial is beschikbaar op GitHub - het is een op Maven gebaseerd project, dus het moet gemakkelijk te importeren en te draaien zijn zoals het is.