Tomáš Pitner, Radek Ošlejšek, Marek Šabo, Jakub Čecháček pitner@muni.cz
Základní věci jsou v balících java.io, java.nio.file.
Základem je třída java.io.File
Objekt třídy File je de facto nositelem jména souboru, jakási "brána" k fyzickým souborům na disku.
Nejde tedy o datovou strukturu nesoucí např. obsah souboru.
Používá se jak pro soubory, tak adresáře, linky i soubory identifikované UNC jmény
Je plně platformově nezávislé.
Na odstínění odlišností jednotlivých systémů souborů lze použít vlastností (uvádíme jejich hodnoty pro JVM pod systémem MS Windows):
\\
jako char
totéž jako String
:
jako char
totéž jako String
adresář uživatele, pod jehož UID je proces JVM spuštěn
Pro vytvoření objektu třídy File konstruktorem (NEJEDNÁ SE PŘÍMÉ VYTVOŘENÍ SOUBORU NA DISKU!) máme několik možností:
zpřístupní v aktuálním adresáři soubor s názvem filename
zpřístupní v adresáři baseDir soubor s názvem filename
zpřístupní v adresáři se jménem baseDirName soubor s názvem filename
zpřístupní soubor se souborovým (file:) URL url
vrátí true, právě když zpřístupněný soubor (nebo adresář) existuje
test, zda jde o soubor a nikoli adresář
test, zda jde o adresář
mám právo čtení souboru?
mám právo zápisu souboru?
zkusí vytvořit soubor soubor a vrací true, právě když se podaří vytvořit.
obdobně pro adresář
navíc si umí dotvořit i příp. neexistující adresáře na cestě
Vytvoření dočasného (temporary) souboru — skutečně fyzicky vytvoří dočasný soubor ve standardním, pro to určeném, adresáři (např. c:/temp) s uvedeným prefixem a sufixem názvu
dtto, ale vytvoří dočasný soubor v zadaném adr. directory
zrušení souboru nebo adresáře
přejmenuje soubor nebo adresář (neumí přesun souboru/adresáře)
délka (velikost) souboru v bajtech
čas poslední modifikace v ms od začátku éry — tj. ve stejných jednotkách a škále jako systémový čas vracený System.currentTimeMillis().
jen jméno souboru (tj. poslední část cesty)
celá cesta k souboru i se jménem
absolutní cesta k souboru i se jménem
adresář, v němž je soubor nebo adresář obsažen
Blíže viz dokumentace API třídy File.
Klíčem je opět třída File, použitelná i pro adresáře
Jak např. získat (filtrovaný) seznam souborů v adresáři?
Pomocí metody File[] listFiles(FileFilter ff) nebo podobné File[] listFiles(FilenameFilter fnf).
FileFilter je rozhraní s jedinou metodou boolean accept(File pathname)
obdobně FilenameFilter
Balík java.nio
Třída java.nio.file.Path
Mnoho praktických tříd a metod, v nových verzích Javy:
pohotové čtení textů ze souboru,
navštěvování souborů v adresáři, ** spousta dalších možností