Získajte aktuálny pracovný adresár v prostredí Java
1. Prehľad
Získať aktuálny pracovný adresár v Jave je jednoduchá úloha, bohužiaľ v JDK nie je k dispozícii priame API, ktoré by to umožňovalo.
V tomto tutoriále sa dozvieme, ako získať aktuálny pracovný adresár v Jave java.lang.Systém, java.io.File, java.nio.file.FileSystems, a cesty java.nio.file.
2. Systém
Začnime so štandardným riešením Systém # getProperty, za predpokladu, že náš súčasný názov pracovného adresára je Baeldung v celom kóde:
statický konečný reťazec CURRENT_DIR = "Baeldung"; @Test void whenUsingSystemProperties_thenReturnCurrentDirectory () {String userDirectory = System.getProperty ("user.dir"); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }
Použili sme kľúč vstavanej vlastnosti Java pouzivatel.dir na stiahnutie aktuálneho pracovného adresára z SystémMapa nehnuteľností. Toto riešenie funguje vo všetkých verziách JDK.
3. Súbor
Pozrime sa na ďalšie riešenie pomocou java.io.Súbor:
@Test void whenUsingJavaIoFile_thenReturnCurrentDirectory () {String userDirectory = new File (""). GetAbsolutePath (); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }
Tu je Súbor # getAbsolutePath interne používa Systém # getProperty aby sme dostali názov adresára, podobný nášmu prvému riešeniu. Je to neštandardné riešenie, ako získať aktuálny pracovný adresár, a funguje to vo všetkých verziách JDK.
4. FileSystems
Ďalšou platnou alternatívou by bolo použitie nového java.nio.file.FileSystems API:
@Test void whenUsingJavaNioFileSystems_thenReturnCurrentDirectory () {String userDirectory = FileSystems.getDefault () .getPath ("") .toAbsolutePath () .toString (); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }
Toto riešenie používa nové rozhranie Java NIO API a pracuje iba s JDK 7 alebo vyšší.
5. Cesty
A nakoniec sa pozrime na jednoduchšie riešenie, ako získať aktuálny adresár cesty java.nio.file API:
@Test void whenUsingJavaNioPaths_thenReturnCurrentDirectory () {String userDirectory = Paths.get ("") .toAbsolutePath () .toString (); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }
Tu, Cesty # dostať interne používa FileSystem # getPath na cestu. Používa nové Java NIO API, takže toto riešenie funguje iba s JDK 7 alebo vyšší.
6. Záver
V tomto tutoriáli sme preskúmali štyri rôzne spôsoby, ako získať aktuálny pracovný adresár v Jave. Prvé dve riešenia fungujú vo všetkých verziách JDK, zatiaľ čo posledné dve fungujú iba s JDK 7 alebo vyššie.
Odporúčame použiť Systém Toto riešenie je efektívne a priame, preto ho môžeme zjednodušiť zabalením tohto volania API do metódy statického obslužného programu a priamym prístupom k nemu.
Zdrojový kód tohto tutoriálu je k dispozícii na GitHube - jedná sa o projekt založený na Maven, takže by malo byť ľahké ho importovať a bežať tak, ako je.