Hent det aktuelle arbejdsmappe i Java

1. Oversigt

Det er en nem opgave at få den aktuelle arbejdsmappe i Java, men desværre er der ingen direkte API tilgængelig i JDK til at gøre dette.

I denne vejledning lærer vi, hvordan man får den aktuelle arbejdsmappe i Java med java.lang.System, java.io.File, java.nio.file.FileSystems, og java.nio.file Stier.

2. System

Lad os begynde med standardløsningen ved hjælp af System # getProperty, forudsat at vores nuværende arbejdsmappe navn er Baeldung gennem hele koden:

statisk endelig streng CURRENT_DIR = "Baeldung"; @Test ugyldig nårUsingSystemProperties_thenReturnCurrentDirectory () {String userDirectory = System.getProperty ("user.dir"); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }

Vi brugte en Java-indbygget ejendomsnøgle bruger.dir for at hente den aktuelle arbejdsmappe fra System'S ejendomskort. Denne løsning fungerer på tværs af alle JDK-versioner.

3. Fil

Lad os se en anden løsning ved hjælp af java.io-fil:

@Test ugyldig nårUsingJavaIoFile_thenReturnCurrentDirectory () {String userDirectory = ny fil (""). GetAbsolutePath (); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }

Her, den Fil # getAbsolutePath internt brug System # getProperty for at få katalognavnet, svarende til vores første løsning. Det er en ikke-standard løsning til at få den aktuelle arbejdsmappe, og den fungerer på tværs af alle JDK-versioner.

4. FileSystems

Et andet gyldigt alternativ ville være at bruge det nye java.nio.file.FileSystems API:

@Test ugyldig nårUsingJavaNioFileSystems_thenReturnCurrentDirectory () {String userDirectory = FileSystems.getDefault () .getPath ("") .toAbsolutePath () .toString (); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }

Denne løsning bruger den nye Java NIO API, og den fungerer kun med JDK 7 eller højere.

5. Stier

Og endelig, lad os se en enklere løsning til at få den aktuelle mappe til at bruge java.nio.file Stier API:

@Test ugyldigt nårUsingJavaNioPaths_thenReturnCurrentDirectory () {String userDirectory = Paths.get ("") .toAbsolutePath () .toString (); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }

Her, Stier # få internt brug FileSystem # getPath at hente stien. Den bruger den nye Java NIO API, så denne løsning fungerer kun med JDK 7 eller højere.

6. Konklusion

I denne vejledning undersøgte vi fire forskellige måder at få den aktuelle arbejdsmappe i Java. De første to løsninger fungerer på tværs af alle versioner af JDK, mens de sidste to kun fungerer med JDK 7 eller højere.

Vi anbefaler at bruge System løsning, da den er effektiv og ligetil, kan vi forenkle den ved at indpakke dette API-opkald i en statisk hjælpemetode og få adgang til det direkte.

Kildekoden til denne tutorial er tilgængelig på GitHub - det er et Maven-baseret projekt, så det skal være let at importere og køre som det er.