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ștePath.Combine. - Un nume de fișier venit de la utilizator dat la
Path.Combinepoate fi absolut sau poate conține..și să iasă din dosarul tău. Verifică rezultatul cuPath.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.