Vytváranie dočasných adresárov v prostredí Java

1. Prehľad

Dočasné adresáre prídu vhod, keď potrebujeme vytvoriť súbor súborov, ktoré môžeme neskôr zahodiť. Keď vytvoríme dočasné adresáre, môžeme delegovať na operačný systém, kam ich umiestniť, alebo určiť, kam ich chceme umiestniť.

V tomto krátkom návode sa dozvieme ako vytvoriť dočasné adresáre v Jave pomocou rôznych API a prístupov. Všetky príklady v tomto výučbe sa vykonajú pomocou obyčajného prostredia Java 7+, Guava a Apache Commons IO.

2. Delegujte operačný systém

Jedným z najpopulárnejších prístupov používaných na vytvorenie dočasných adresárov je delegovanie cieľa na základný operačný systém. Poloha je daná java.io.tmpdir vlastnosť a každý operačný systém má svoju vlastnú štruktúru a rutiny čistenia.

V jednoduchej Jave vytvoríme adresár zadaním predpony, ktorú má mať adresár:

Reťazec tmpdir = Files.createTempDirectory ("tmpDirPrefix"). ToFile (). GetAbsolutePath (); Reťazec tmpDirsLocation = System.getProperty ("java.io.tmpdir"); assertThat (tmpdir) .startWith (tmpDirsLocation);

Použitím Guavy je proces podobný, ale nemôžeme určiť, ako chceme predponu vložiť do svojho adresára:

Reťazec tmpdir = Files.createTempDir (). GetAbsolutePath (); Reťazec tmpDirsLocation = System.getProperty ("java.io.tmpdir"); assertThat (tmpdir) .startsWith (tmpDirsLocation);

Apache Commons IO neposkytuje spôsob vytvárania dočasných adresárov. Poskytuje obálku na získanie dočasného adresára operačného systému a potom zostáva iba na nás, či urobíme zvyšok:

Reťazec tmpDirsLocation = System.getProperty ("java.io.tmpdir"); Cesta cesty = Paths.get (FileUtils.getTempDirectory (). GetAbsolutePath (), UUID.randomUUID (). ToString ()); Reťazec tmpdir = Files.createDirectories (cesta) .toFile (). GetAbsolutePath (); assertThat (tmpdir) .startWith (tmpDirsLocation);

Aby sme sa vyhli stretom mien s existujúcimi adresármi, používame UUID.randomUUID () vytvoriť adresár s náhodným názvom.

3. Zadanie umiestnenia

Niekedy musíme určiť, kde chceme vytvoriť náš dočasný adresár. Dobrým príkladom je stavanie Maven. Pretože už máme „dočasnú“ stavbu cieľ adresár, môžeme tento adresár využiť na umiestnenie dočasných adresárov, ktoré bude naša zostava pravdepodobne potrebovať:

Cesta tmpdir = Files.createTempDirectory (Paths.get ("cieľ"), "tmpDirPrefix"); assertThat (tmpdir.toFile (). getPath ()). startsWith ("cieľ");

V systémoch Guava aj Apache Commons IO chýbajú metódy na vytvorenie dočasných adresárov na konkrétnych miestach.

Stojí za zmienku, že the cieľ adresár sa môže líšiť v závislosti od konfigurácie zostavy. Jedným zo spôsobov, ako to urobiť neprekonateľným, je odovzdanie umiestnenia cieľového adresára JVM, na ktorom sa test vykonáva.

Pretože operačný systém sa o čistenie nestará, môžeme ich využiť File.deleteOnExit ():

tmpdir.toFile (). deleteOnExit ();

Tadiaľto, súbor sa vymaže po ukončení JVM, ale iba ak je ukončenie ladné.

4. Používanie rôznych atribútov súborov

Rovnako ako akýkoľvek iný súbor alebo adresár, aj po vytvorení dočasného adresára je možné určiť atribúty súborov. Ak teda chceme vytvoriť dočasný adresár, ktorý môže čítať iba používateľ, ktorý ho vytvára, môžeme určiť množinu atribútov, ktorá to umožní:

FileAttribute attrs = PosixFilePermissions.asFileAttribute (PosixFilePermissions.fromString ("r --------")); Cesta tmpdir = Files.createTempDirectory (Paths.get ("cieľ"), "tmpDirPrefix", attrs); assertThat (tmpdir.toFile (). getPath ()). startsWith ("cieľ"); assertThat (tmpdir.toFile (). canWrite ()). isFalse ();

Ako sa dalo očakávať, Guava a Apache Commons IO neposkytujú spôsob, ako určiť atribúty pri vytváraní dočasných adresárov.

Je tiež potrebné poznamenať, že predchádzajúci príklad predpokladá, že sa nachádzame pod súborovým systémom kompatibilným s Posix, ako je Unix alebo macOS.

Viac informácií o atribútoch súborov nájdete v našom Sprievodcovi rozhraniami API súborov NIO2.

5. Záver

V tomto krátkom tutoriáli sme preskúmali, ako vytvoriť dočasné adresáre v obyčajnom prostredí Java 7+, Guava a Apache Commons IO. Videli sme, že obyčajná Java je najflexibilnejší spôsob vytvárania dočasných adresárov, pretože ponúka širšiu škálu možností pri zachovaní minima výrečnosti.

Ako obvykle je všetok zdrojový kód tohto tutoriálu k dispozícii na GitHub.


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