...
Nézzük ezeket egyenként...
Platform független fájlrendszer modell
A Java7 NIO.2 kapcsán került bevezetésre a Path osztály, amely az eddigi megoldások mellett lehetővé teszi az elérési útvonalak platformra való fordítását. Emlékezzünk: egy csomó problémánk volt abból, hogy Unix like rendszereken a fájlrendszer kiinduló pontja a / volt, míg Windows és Windows fájlkezelését emuláló rendszerek (emlékeim szerint például a Symbian) esetén voltak meghajtók, így több gyökere is volt a fájlrendszereknek, illetve az elérési útvonalon a szinteket elválasztó jel a / helyett a \ volt, így a multiplatformos programjaink tele voltak platformfüggő elágazásokkal, illetve File.separator összefűzésekkel. Nem beszélve a soft- és hard-link támogatásról, a valódi elérési út felderítéséről és a többi apróságról... Na, ennek végre vége...
Fájlrendszer-fa feltérképezés
A fájlrendszer-fa feltérképezése azon igények egyike, amelyre eddig még nem volt szükségem, de örülök, hogy a NIO.2 ezt már támogatja, az alkalmazás szerverek, illetve a különféle szerver oldali Java megoldások fejlesztői nyilván örülnek egy ilyen lehetőségnek. A módszer a Visitor minta alapján épül fel, ezért hozzunk létre egy saját Visitor-t, amely egyszerűen csak kiírja a kapott Path példányt:
...
Code Block |
---|
./pom.xml ./src/test/java/hu/javaforum/testproject/AppTest.java ./src/main/java/hu/javaforum/testproject/App.java ./target/classes/hu/javaforum/testproject/App$FileVisitor.class ./target/classes/hu/javaforum/testproject/App$1.class ./target/classes/hu/javaforum/testproject/App.class |
Az állományműveletek atomi támogatása
Sajnos a Java hetes verzióig kellett várnunk arra, hogy egy fájlt át tudjunk mozgatni vagy akár csak átnevezni... ez is már a múlté...
...
Ez Java7 előtt egy több tucat soros varázslatra volt szükség egy ilyen igény teljesítéséhez.
Soft- és hard-link támogatás
A NIO.2 előtt erre nem volt lehetőség, nem lehetett megállapítani egy elérési útról, hogy az tartalmaz-e linkeket vagy sem, most már vannak eszközeink.
...
Code Block |
---|
> ls -l /tmp/test* -rw-r--r-- 2 auth.gabor users 5 aug 12 12.30 /tmp/test lrwxrwxrwx 1 auth.gabor users 9 aug 12 12.44 /tmp/test2 -> /tmp/test -rw-r--r-- 2 auth.gabor users 5 aug 12 12.30 /tmp/test3 |
Fájl attribútumok kezelése
Ha le szeretnénk kérdezni egy adott fájl attribútumait, akkor a legtöbb példában megemlítésre kerül a JNI vagy a széttárt kéz, mivel erre túl sok eszközünk nem volt a Java platformot tekintve, s sajnos a megfelelő megoldásra egészen a Java7 megjelenéséig várnunk kellett. A fentiekhez hasonlóan a megoldás egyszerű, csak azt kell eldöntenünk, hogy milyen attribútumokat szeretnénk kiolvasni (a teljesség igénye nélkül):
...
Code Block |
---|
BasicFileAttributes: /tmp/test:creationTime 2012-08-12T10:30:39Z /tmp/test:isDirectory false /tmp/test:isOther false /tmp/test:isRegularFile true /tmp/test:isSymbolicLink false /tmp/test:lastAccessTime 2012-08-12T10:33:09Z /tmp/test:lastModifiedTime 2012-08-12T10:30:39Z /tmp/test:size 5 DosFileAttributes: /tmp/test:isArchive false /tmp/test:isHidden false /tmp/test:isReadOnly false /tmp/test:isSystem false PosixFileAttributes: /tmp/test:group users /tmp/test:owner auth.gabor /tmp/test:permissions [GROUP_READ, OTHERS_READ, OWNER_WRITE, OWNER_READ] AclFileAttributeView: FileOwnerAttributeView: /tmp/test:getOwner auth.gabor |
Változás követés
A fájlrendszerben történt változások figyelése fontos feladat, gondoljunk csak a kedvenc fejlesztőkörnyezetünkre, amely szeretne értesülni arról, hogy a háta mögött módosítunk egy állományt. A Java7 előtt erre különféle praktikákra volt szükség, de ez is a múlté...
...