Hlavní balíky V/V operací
-
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é.
Práce se soubory (2)
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):
File.separatorChar:: \\
jako char
File.separator:: totéž jako String
File.pathSeparatorChar:: :
jako char
File.pathSeparator:: totéž jako String
System.getProperty("user.dir"):: adresář uživatele, pod jehož UID je proces JVM spuštěn
Vytvoření objektu File
-
Pro vytvoření objektu třídy
File
konstruktorem (NEJEDNÁ SE PŘÍMÉ VYTVOŘENÍ SOUBORU NA DISKU!) máme několik možností:- new File(String filename)
-
zpřístupní v aktuálním adresáři soubor s názvem filename
- new File(File baseDir, String filename)
-
zpřístupní v adresáři baseDir soubor s názvem filename
- new File(String baseDirName, String filename)
-
zpřístupní v adresáři se jménem baseDirName soubor s názvem filename
- new File(URL url)
-
zpřístupní soubor se souborovým (
file:
) URL url
Testy nad objekty File
-
Testy existence a povahy souboru:
- boolean exists()
-
vrátí
true
, právě když zpřístupněný soubor (nebo adresář) existuje - boolean isFile()
-
test, zda jde o soubor a nikoli adresář
- boolean isDirectory()
-
test, zda jde o adresář
Testy nad objekty File
(2)==
- boolean canRead()
-
mám právo čtení souboru?
- boolean canWrite()
-
mám právo zápisu souboru?
Vytvoření souboru/adresáře
- boolean createNewFile()
-
zkusí vytvořit soubor soubor a vrací
true
, právě když se podaří vytvořit. - boolean mkdir()
-
obdobně pro adresář
- boolean mkdirs()
-
navíc si umí dotvořit i příp. neexistující adresáře na cestě
Vytvoření dočasného souboru
- static File createTempFile(String prefix, String suffix)
-
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 static File createTempFile(String prefix, String suffix, File directory)-
dtto, ale vytvoří dočasný soubor v zadaném adr.
directory
-
Smazání, přejmenování
- boolean delete()
-
zrušení souboru nebo adresáře
- boolean renameTo(File dest)
-
přejmenuje soubor nebo adresář (neumí přesun souboru/adresáře)
Další vlastnosti
- long length()
-
délka (velikost) souboru v bajtech
- long lastModified()
-
č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()
. - String getName()
-
jen jméno souboru (tj. poslední část cesty)
- String getPath()
-
celá cesta k souboru i se jménem
- String getAbsolutePath()
-
absolutní cesta k souboru i se jménem
- String getParent()
-
adresář, v němž je soubor nebo adresář obsažen
-
Blíže viz dokumentace API třídy File.
-
Práce s adresáři
-
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 metodouboolean accept(File pathname)
-
obdobně
FilenameFilter