Ce face Path.toAbsolutePath
O cale relativă (date/note.txt) are sens doar față de folderul din care rulează programul. toAbsolutePath() pune în față acest folder și dă calea completă, de exemplu /home/ana/proiect/date/note.txt. Dacă o cale este deja absolută, o returnează neschimbată.
Metoda nu verifică dacă fișierul există și nu simplifică .. sau .; pentru asta adaugă normalize(). isAbsolute() spune dacă o cale este deja absolută.
Ce returnează
Un Path absolut.
Exemple
Exemplul 1: Calea absolută a unui fișier din folderul curent
Programul rulează într-un folder temporar diferit la fiecare rulare, așa că afișăm doar ce nu se schimbă. Pe calculatorul tău, System.out.println(abs) ar arăta calea completă.
import java.nio.file.Path;
public class Main {
public static void main(String[] args) {
Path relativ = Path.of("date", "note.txt");
Path abs = relativ.toAbsolutePath();
System.out.println(relativ + " absolută? " + relativ.isAbsolute());
System.out.println("după toAbsolutePath? " + abs.isAbsolute());
System.out.println("se termină cu date/note.txt: " + abs.endsWith(relativ));
System.out.println("are mai multe nume: " + (abs.getNameCount() > relativ.getNameCount()));
}
}
Rezultat
date/note.txt absolută? false
după toAbsolutePath? true
se termină cu date/note.txt: true
are mai multe nume: true
Exemplul 2: O cale absolută rămâne la fel
import java.nio.file.Path;
public class Main {
public static void main(String[] args) {
Path site = Path.of("/var/www/dexblog");
System.out.println(site.toAbsolutePath());
System.out.println(site.toAbsolutePath().equals(site));
System.out.println(Path.of("/var/www/../log").toAbsolutePath());
System.out.println(Path.of("/var/www/../log").toAbsolutePath().normalize());
}
}
Rezultat
/var/www/dexblog
true
/var/www/../log
/var/log
Greșeli frecvente
- Afișezi utilizatorului calea relativă când un fișier lipsește. Mesajul e mai clar cu
toAbsolutePath(): vezi exact unde a căutat programul. - Te aștepți ca
toAbsolutePathsă elimine... Adaugănormalize().
Comenzi înrudite
Path.normalize: Simplifică o cale: elimină „.” (folderul curent) și „..” împreună cu folderul dinaintea lui.Path.relativize: Calculează drumul relativ de la o cale la alta: Path.of(„a”).relativize(Path.of(„a/b/c”)) dă b/c.Path.of: Creează un Path din unul sau mai multe nume; le unește cu separatorul corect al sistemului.Path: Reprezintă calea unui fișier sau folder (ex. date/note.txt); nu verifică dacă fișierul există. toString o dă ca text.