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.