Nabavite trenutni radni direktorij na Javi

1. Pregled

Jednostavan je zadatak dobiti trenutni radni direktorij na Javi, ali nažalost, u JDK-u nema izravnog API-ja za to.

U ovom uputstvu naučit ćemo kako dobiti trenutni radni direktorij u Javi java.lang.Sustav, java.io.File, java.nio.file.FileSystems, i java.nio.file.Paths.

2. Sustav

Počnimo sa standardnim rješenjem koristeći Sustav # getProperty, pod pretpostavkom da je naše trenutno radno ime direktorija Baeldung u cijelom kodu:

statički završni niz CURRENT_DIR = "Baeldung"; @Test void whenUsingSystemProperties_thenReturnCurrentDirectory () {String userDirectory = System.getProperty ("user.dir"); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }

Koristili smo Java ugrađeni ključ svojstva korisnik.dir za preuzimanje trenutne radne mape iz Sustav‘S imovinskom kartom. Ovo rješenje djeluje u svim JDK verzijama.

3. Datoteka

Pogledajmo još jedno rješenje pomoću java.io.Datoteka:

@Test void whenUsingJavaIoFile_thenReturnCurrentDirectory () {String userDirectory = nova datoteka (""). GetAbsolutePath (); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }

Evo, Datoteka # getAbsolutePath interno koristi Sustav # getProperty da biste dobili ime direktorija, slično našem prvom rješenju. Nestandardno je rješenje dobiti trenutni radni direktorij i funkcionira u svim JDK verzijama.

4. FileSystems

Druga valjana alternativa bila bi uporaba novog java.nio.file.FileSystems API:

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

Ovo rješenje koristi novi Java NIO API i radi samo s JDK 7 ili noviji.

5. Staze

I na kraju, pogledajmo jednostavnije rješenje za dobivanje trenutnog direktorija java.nio.file.Paths API:

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

Ovdje, Staze # dobiti interno koristi FileSystem # getPath da dohvati put. Koristi novi Java NIO API, tako da ovo rješenje radi samo s JDK 7 ili noviji.

6. Zaključak

U ovom uputstvu istražili smo četiri različita načina za dobivanje trenutnog radnog direktorija u Javi. Prva dva rješenja rade u svim inačicama JDK, dok posljednja dva rade samo s JDK 7 ili više.

Preporučujemo upotrebu Sustav rješenje je učinkovito i jednostavno, možemo ga pojednostaviti umotavanjem ovog API poziva u statičku uslužnu metodu i izravnim pristupom.

Izvorni kôd ovog vodiča dostupan je na GitHub-u - projekt je zasnovan na Mavenu, pa bi ga trebalo lako uvesti i pokrenuti kakav jest.