Java Language
Nuovo I / O file
Ricerca…
Sintassi
- Paths.get (String first, String ... more) // Crea un'istanza Path in base agli elementi String
- Paths.get (URI uri) // Crea un'istanza Path da un URI
Creazione di percorsi
La classe Path
è usata per rappresentare programmaticamente un percorso nel file system (e può quindi puntare a file e directory, anche a quelli non esistenti)
Un percorso può essere ottenuto usando i Paths
classe helper:
Path p1 = Paths.get("/var/www");
Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt");
Path p4 = Paths.get("/home", "arthur", "files", "diary.tex");
Recupero di informazioni su un percorso
Le informazioni su un percorso possono essere ottenute utilizzando i metodi di un oggetto Path
:
toString()
restituisce la rappresentazione della stringa del percorsoPath p1 = Paths.get("/var/www"); // p1.toString() returns "/var/www"
getFileName()
restituisce il nome del file (o, più specificamente, l'ultimo elemento del percorsoPath p1 = Paths.get("/var/www"); // p1.getFileName() returns "www" Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getFileName() returns "HHGTDG.odt"
getNameCount()
restituisce il numero di elementi che formano il percorsoPath p1 = Paths.get("/var/www"); // p1.getNameCount() returns 2
getName(int index)
restituisce l'elemento nell'indice specificatoPath p1 = Paths.get("/var/www"); // p1.getName(0) returns "var", p1.getName(1) returns "www"
getParent()
restituisce il percorso della directory padrePath p1 = Paths.get("/var/www"); // p1.getParent().toString() returns "/var"
getRoot()
restituisce la radice del percorsoPath p1 = Paths.get("/var/www"); // p1.getRoot().toString() returns "/" Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getRoot().toString() returns "C:\\"
Manipolare i percorsi
Unire due percorsi
I percorsi possono essere uniti usando il metodo resolve()
. Il percorso passato deve essere un percorso parziale, che è un percorso che non include l'elemento radice.
Path p5 = Paths.get("/home/");
Path p6 = Paths.get("arthur/files");
Path joined = p5.resolve(p6);
Path otherJoined = p5.resolve("ford/files");
joined.toString() == "/home/arthur/files"
otherJoined.toString() == "/home/ford/files"
Normalizzare un percorso
I percorsi possono contenere gli elementi .
(che punta alla directory in cui ti trovi attualmente) e ..
(che punta alla directory principale).
Quando viene utilizzato in un percorso, .
può essere rimosso in qualsiasi momento senza modificare la destinazione del percorso e ..
può essere rimosso insieme all'elemento precedente.
Con l'API Paths, questo viene fatto usando il metodo .normalize()
:
Path p7 = Paths.get("/home/./arthur/../ford/files");
Path p8 = Paths.get("C:\\Users\\.\\..\\Program Files");
p7.normalize().toString() == "/home/ford/files"
p8.normalize().toString() == "C:\\Program Files"
Recupero delle informazioni usando il filesystem
Per interagire con il filesystem usate i metodi della classe Files
.
Controllo dell'esistenza
Per verificare l'esistenza del file o della directory a cui punta il percorso, utilizzare i seguenti metodi:
Files.exists(Path path)
e
Files.notExists(Path path)
!Files.exists(path)
non deve essere necessariamente uguale a Files.notExists(path)
, perché ci sono tre possibili scenari:
- L'esistenza di un file o di una directory è verificata (
exists
restituiscetrue
enotExists
restituiscefalse
in questo caso) - L'inesistenza di un file o di una directory viene verificata (
exists
restituiscefalse
enotExists
restituiscetrue
) - Né l'esistenza né l'inesistenza di un file o di una directory possono essere verificati (ad esempio a causa di restrizioni di accesso): Entrambi
exists
e i nonnonExists
restituiscono false.
Verifica se un percorso punta a un file o a una directory
Questo viene fatto usando Files.isDirectory(Path path)
e Files.isRegularFile(Path path)
Path p1 = Paths.get("/var/www");
Path p2 = Paths.get("/home/testuser/File.txt");
Files.isDirectory(p1) == true
Files.isRegularFile(p1) == false
Files.isDirectory(p2) == false
Files.isRegularFile(p2) == true
Ottenere proprietà
Questo può essere fatto usando i seguenti metodi:
Files.isReadable(Path path)
Files.isWritable(Path path)
Files.isExecutable(Path path)
Files.isHidden(Path path)
Files.isSymbolicLink(Path path)
Ottenere il tipo MIME
Files.probeContentType(Path path)
Questo cerca di ottenere il tipo MIME di un file. Restituisce una stringa di tipo MIME, come questa:
-
text/plain
per i file di testo -
text/html
per pagine HTML -
application/pdf
per i file PDF -
image/png
per i file PNG
Lettura dei file
I file possono essere letti in byte e in linea usando la classe Files
.
Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
byte[] content = Files.readAllBytes(p2);
List<String> linesOfContent = Files.readAllLines(p2);
Files.readAllLines()
facoltativamente un set di caratteri come parametro (l'impostazione predefinita è StandardCharsets.UTF_8
):
List<String> linesOfContent = Files.readAllLines(p2, StandardCharsets.ISO_8859_1);
Scrivere file
I file possono essere scritti come morsi e linee usando la classe Files
Path p2 = Paths.get("/home/testuser/File.txt");
List<String> lines = Arrays.asList(
new String[]{"First line", "Second line", "Third line"});
Files.write(p2, lines);
Files.write(Path path, byte[] bytes)
I file esistenti verranno sovrascritti, i file non esistenti verranno creati.