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.


$config[zx-auto] not found$config[zx-overlay] not found