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 percorso

    Path p1 = Paths.get("/var/www"); // p1.toString() returns "/var/www"
    
  • getFileName() restituisce il nome del file (o, più specificamente, l'ultimo elemento del percorso

    Path 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 percorso

    Path p1 = Paths.get("/var/www"); // p1.getNameCount() returns 2
    
  • getName(int index) restituisce l'elemento nell'indice specificato

    Path p1 = Paths.get("/var/www"); // p1.getName(0) returns "var", p1.getName(1) returns "www"
    
  • getParent() restituisce il percorso della directory padre

    Path p1 = Paths.get("/var/www"); // p1.getParent().toString() returns "/var"
    
  • getRoot() restituisce la radice del percorso

    Path 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 restituisce true e notExists restituisce false in questo caso)
  • L'inesistenza di un file o di una directory viene verificata ( exists restituisce false e notExists restituisce true )
  • 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 non nonExists 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.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow