Path (Combine, GetFileName, GetExtension) în C# (.NET)

.NET BCL și CLI-ul dotnet .NET Framework 1.0 (Join: .NET Core 3.0)

Construiește și desface căi de fișiere fără să lucrezi cu text manual: Combine, GetFileName, GetExtension, GetDirectoryName, ChangeExtension.

Sintaxă C#
Path.Combine("date", "2026", "raport.csv")   Path.GetExtension(cale)   Path.GetFileNameWithoutExtension(cale)

Ce face Path (Combine, GetFileName, GetExtension)

System.IO.Path lucrează doar cu textul căii, fără să verifice dacă fișierul există. Path.Combine pune separatorul potrivit sistemului (/ pe Linux și macOS, \ pe Windows), așa că același cod merge peste tot.

Pentru a desface o cale: GetFileName (numele cu extensia), GetFileNameWithoutExtension, GetExtension (cu punct, de exemplu .pdf), GetDirectoryName (dosarul părinte). ChangeExtension întoarce calea cu altă extensie, iar GetTempPath și GetTempFileName dau locuri pentru fișiere temporare.

Diferența dintre Combine și Join: dacă o parte începe cu separator (cale absolută), Combine ignoră tot ce era înainte, iar Join doar lipește părțile.

Exemple

Exemplul 1: Construire și desfacere a unei căi

string cale = Path.Combine("/home/ana", "documente", "raport.pdf");

Console.WriteLine(cale);
Console.WriteLine(Path.GetFileName(cale));
Console.WriteLine(Path.GetFileNameWithoutExtension(cale));
Console.WriteLine(Path.GetExtension(cale));
Console.WriteLine(Path.GetDirectoryName(cale));
Console.WriteLine(Path.ChangeExtension(cale, ".txt"));

Rezultat pe Linux sau macOS

/home/ana/documente/raport.pdf
raport.pdf
raport
.pdf
/home/ana/documente
/home/ana/documente/raport.txt

Exemplul 2: Combine față de Join și căi relative

Al doilea argument începe cu /, deci Combine renunță la primul.

Console.WriteLine(Path.Combine("/home/ana", "/etc/hosts"));
Console.WriteLine(Path.Join("/home/ana", "/etc/hosts"));
Console.WriteLine(Path.IsPathRooted("facturi/ian.csv"));
Console.WriteLine(Path.IsPathRooted("/var/log"));
Console.WriteLine(Path.DirectorySeparatorChar);

Rezultat pe Linux sau macOS

/etc/hosts
/home/ana/etc/hosts
False
True
/

Greșeli frecvente

  • Lipirea căilor cu + "/" +: pe Windows rezultă separatori amestecați, iar la dublarea separatorului apar căi greșite. Folosește Path.Combine.
  • Un nume de fișier venit de la utilizator dat la Path.Combine poate fi absolut sau poate conține .. și să iasă din dosarul tău. Verifică rezultatul cu Path.GetFullPath.
  • GetExtension întoarce extensia cu punct (".pdf"), nu "pdf".

Comenzi înrudite

  • Directory și DirectoryInfo: Creează, listează, mută și șterge dosare; GetFiles și EnumerateFiles găsesc fișierele după model, inclusiv în subdosare.
  • StreamReader și StreamWriter: Citesc și scriu text dintr-un fișier sau stream, linie cu linie, fără să încarce tot fișierul în memorie.