Path.toAbsolutePath în Java

Transformă o cale relativă în cale absolută, adăugând în față folderul curent al programului.

Sintaxă
Path toAbsolutePath()
boolean isAbsolute()

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 toAbsolutePath să 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.