"Ó, Rishi! Szia!"
"Szia Amigo! Milyen az élet?"
"Remek. Bilaabo az imént egy csomó érdekes dolgot mesélt nekem File-ról, és arról, hogyan kell vele dolgozni."
– Ahogy megtörténik, azt hiszem, van mit hozzátennem ehhez a témához.
"Tényleg? Akkor csak füles vagyok."
"Rendben, figyeljen. A Java folyamatosan fejlődik. Fejlesztői folyamatosan új módszereket keresnek a különböző dolgok hatékonyabb elvégzésére. A Java 7-ben egy alternatívát adtak a File osztályhoz."

"Alternatív?"
"Igen. A Fájl osztályt vették alapul, hozzáadtak néhány új dolgot, átnevezték a metódusokat, majd kettéosztották. Tehát most két új osztály van: Path és Files . A Path valójában a fájl új analógja osztály, a File pedig egy segédprogram osztály (hasonlóan az Arrays és Collections osztályokkal). A File osztály összes statikus metódusa ide kerül. Ha így csinálod, az OOP szempontjából 'helyesebb'."
"Nos, ha az OOP szempontjából, akkor rendben. Szóval mi változott?"
"Először is úgy döntöttek, hogy nem reprodukálják azokat a metódusokat, amelyek String és File objektumokat adtak vissza. A Path osztályban minden metódus elérési utat ad vissza .
"Másodszor, sok statikus segédprogramot áthelyeztek a Fájlok osztályba."
"Harmadszor, kényelmesebbé vált a relatív utakkal dolgozni."
"Íme a módszerek listája:"
Az Ösvény osztály módszerei | Leírás |
---|---|
boolean isAbsolute() |
Igaz értéket ad vissza, ha az elérési út abszolút. |
Path getRoot() |
Az aktuális elérési út gyökerét adja vissza, azaz a legfelső könyvtárat. |
Path getFileName() |
Az aktuális elérési útból származó fájlnevet adja vissza. |
Path getParent() |
Visszaadja a könyvtárat az aktuális elérési útról. |
boolean startsWith(Path other) |
Ellenőrzi, hogy az aktuális útvonal az átadott útvonallal kezdődik-e. |
boolean endsWith(Path other) |
Ellenőrzi, hogy az aktuális útvonal véget ér-e az átadott útvonallal. |
Path normalize() |
Normalizálja az aktuális útvonalat. Például a «c:/dir/dir2/../a.txt» fájlt «c:/dir/a.txt»-re konvertálja. |
Path relativize(Path other) |
Kiszámítja két út relatív útját, azaz «az utak közötti különbséget» |
Path resolve(String other) |
Abszolút útvonalat határoz meg az aktuális és a relatív útvonalak felhasználásával. |
URI toUri() |
Az aktuális elérési út/fájl esetén az URI-t adja vissza. |
Path toAbsolutePath() |
Az elérési utat abszolút útvonalmá alakítja, ha relatív. |
File toFile() |
Egy fájl objektumot ad vissza, amely megfelel az aktuális Path objektumnak. |
– És a jelenlegi út – mi az?
"Ez az az útvonal, amelyet átadtak annak a Path objektumnak a konstruktorának, amelynek metódusait hívják."
"Rendben. Tehát milyen metódusai vannak a Fájlok osztálynak?"
"Sietsz valahova? Mindjárt elmondom. Íme a legfontosabb módszerek:"
A Fájlok osztály módszerei | Leírás |
---|---|
Path createFile(…) |
Létrehoz egy fájlt a lemezen. |
Path createDirectory(…) |
Létrehoz egy könyvtárat. |
Path createDirectories(…) |
Létrehoz egy könyvtárat és annak összes alkönyvtárát. |
Path createTempFile(…) |
Létrehoz egy ideiglenes fájlt. |
Path createTempDirectory(…) |
Létrehoz egy ideiglenes könyvtárat. |
void delete(Path path) |
Töröl egy fájlt. |
Path copy(Path source, Path target,…) |
Fájlokat másol. |
Path move(Path source, Path target,…) |
Fájl áthelyezése. |
boolean isSameFile(Path, Path) |
Összehasonlít két fájlt. |
boolean isDirectory(Path) |
A Path egy könyvtár? |
boolean isRegularFile(Path) |
Az elérési út egy fájl? |
long size(Path) |
Visszaadja a fájl méretét. |
boolean exists(Path) |
Létezik ilyen nevű objektum? |
boolean notExists(Path) |
Nem létezik azonos nevű objektum? |
long copy(InputStream, OutputStream) |
Bájtokat másol az InputStreamből az OutputStreambe. |
long copy(Path, OutputStream) |
Minden bájtot másol az elérési útról az Output Streambe. |
long copy(InputStream, Path) |
Az InputStream összes bájtját az elérési útra másolja. |
byte[] read(InputStream, int initialSize) |
Egy bájttömböt olvas be az InputStreamből. |
byte[] readAllBytes(Path path) |
Minden bájtot beolvas az InputStreamből. |
List<String> readAllLines(Path path,..) |
Beolvassa a szövegfájlt, és visszaadja a karakterláncok listáját. |
Path write(Path path, byte[] bytes,…) |
Egy bájttömböt ír egy fájlba. |
"Milyen érdekes! Annyi klassz funkció, és mind egy helyen."
"Hát nézd. Tegyük fel, hogy szeretne letölteni egy fájlt az internetről, majd elküldeni valakinek. Ehhez nagyon kényelmes, ha létrehoz egy ideiglenes fájlt a lemezen, és arra menti az olvasott adatokat."
"Nehéz letölteni egy fájlt az internetről?"
"Ez nagyon egyszerű. Nézze meg ezt a példát:"
URL url = new URL("https://www.google.com.ua/images/srpr/logo11w.png");
InputStream inputStream = url.openStream();
Path tempFile = Files.createTempFile("temp-",".tmp");
Files.copy(inputStream, tempFile);
"És ez az?"
"Igen, mire számítottál? Csak 4 sor van."
" 1. sor. Létrehoz egy URL objektumot, amelyhez a képfájl URL-címét továbbítja.
" 2. sor. Az url objektumon megnyílik egy adatfolyam (InputStream) egy fájl olvasásához.
" 3. sor. A createTempFile
módszer ideiglenes fájl létrehozására szolgál.
" 4. sor. A Files.copy metódus adatokat másol innen inputStream
: tempFile
. Ez az."
"Ügyes!"
"Remek. Örülök, hogy tetszik. Szerintem a többi módszert magad is kitalálhatod. És megkérem Diegot, hogy adjon néhány feladatot velük kapcsolatban."
"Apropó, itt van egy jó link ehhez az anyaghoz"
GO TO FULL VERSION