<< Výnimky (odchytávanie) | Obsah | Textové súbory >>
Každý z vás už určite prišiel do styku s adresármi a súbormi. V jave používame triedu File ktorej objekty identifikujú buď jeden súbor alebo jeden adresár. Ako súbor tak aj adresár na lokálnom počítači sú jednoznačne určené svojou cestou. Cesta môže byť úplná, alebo relatívna.
Úplná cesta vo windowse je napríklad "C:\Windows\System32\shell32.dll" alebo "C:\Windows", v linuxe napríklad "/home/peter/heslo.txt" alebo "/etc".
Relatívna cesta je vždy vzhľadom k nejakému adresáru napríklad "System32\shell32.dll" je relatívna cesta vzhľadom k "C:\Windows".
Položky v ceste sú vo windowse oddelené spätnou lomkou "\" alebo obyčajnou lomkou "/" (niektorí o tom nevedia), v linuxe vždy obyčajnou lomkou. Ak budete chcieť používať spätné lomky dajte si pozor na to, že v reťazcoch spätná lomka označuje špeciálny znak, takže musí byť zdvojená, aby sa brala ako znak '\'.
Ak spúšťate program z Eclipsu tak aktuálny adresár je adresár projektu, inak je to adresár z ktorého bol program spustený. Ak niekedy náhodou budete potrebovať zistiť meno aktuálneho adresára použite nasledovný kód:
Cez metódy triedy File sa nevieme dostať k obsahu súboru iba k jeho metadátam, teda informáciám o tomto súbore. Metadáta o súboroch bežne vidíme v súborovom manažéri (napr. Explorer, Windows commander, Total commander, Krusader, mc a iných)). Metadáta obsahujú napríklad veľkosti súborov, obsahy adresárov či práva na čítanie/zápis/spúšťanie.
Veľmi dôležitou vecou, ktorú si je potrebné uvedomiť je, že daný súbor alebo adresár nemusí reálne existovať. Java pri kompilácii zdrojového kódu netestuje, či cesta špecifikovaná pri vytvárani objektu triedy File má aj spoj proťajšok v súborovom systéme. Predstavte si to ako adresu domu. Môžeme napísať na pohľadnicu adresu Ján Javák, Kompilačná 8, Košice, ale to ešte neznamená, že také mesto, ulica alebo Jano Javák bývajúci na tejto adrese existujú.
Prehľad niektorých užitočných metód znázorňuje nasledujúca tabuľka (neučte sa ju naspamäť).
metóda | činnosť |
---|---|
String getPath() | vráti úplný názov súboru alebo adresára |
String getName() | vráti názov súboru alebo adresára (bez cesty) |
boolean exists() | vráti true, ak súbor/adresár existuje |
boolean isFile() | zistí, či inštancia zodpovedá súboru |
boolean isDirectory() | zistí, či inštancia zodpovedá adresáru |
long length() | vráti veľkosť súboru |
createNewFile() | vytvorí súbor, ak neexistuje. Môže vyvolať výnimku IOException ak nemáme dostatočné práva alebo neexistuje adresár v ktorom by sa mal tento súbor vytvoriť. |
mkdir() | vytvorí adresár, zodpovedajúci poslednej položke v ceste, nadadresár musí existovať |
mkdirs() | vytvorí celú adresárovú štruktúru v ceste |
renameTo(File) | premenuje súbor podľa inej inštancie triedy File |
delete() | odstráni súbor |
String[] list() | vráti pole názvov súborov/podadresárov v adresári. Vráti null ak nejde o existujúci adresár |
File[] listFiles() | vráti pole inštancií triedy File zodpovedajúcich súborom/podadresárom v adresári. Vráti null ak nejde o existujúci adresár |
Predstavte si, že chceme vypísať všetky súbory a podadresáre. Použijeme metódu list():
Ak by sme však okrem mien chceli vedieť aj veľkosti všetkých mp3 súborov, už si s metódou list() navystačíme, lebo okrem názvu potrebujeme ku každej položke zistiť, či to je súbor, a akú má veľkosť. Použijeme teda listFiles().