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.