Lucrul cu căile de fișier în .NET

Finalizat

.NET are un mecanism predefinit pentru lucrul cu căi de sistem de fișiere.

În exercițiul anterior, nu am avut multe foldere de analizat. Dacă aveți un sistem de fișiere cu multe fișiere și foldere, construirea manuală a căilor poate fi plictisitoare. Din fericire, .NET oferă unele constante încorporate și funcții utilitare pentru a facilita gestionarea căilor de fișiere.

Aici veți afla despre unele constante și funcții utilitare din spațiul de nume System.IO și tipul de System.Environment, astfel încât să puteți face programul mai inteligent și mai rezistent.

Determinarea directorului curent

Uneori, nu știți în ce director sau cale ar trebui să ruleze programul. Să presupunem că doriți ca programul să utilizeze directorul curent, dar nu cunoașteți calea.

.NET expune calea completă către directorul curent prin metoda Directory.GetCurrentDirectory.

Console.WriteLine(Directory.GetCurrentDirectory());

Dacă rulați codul precedent din folderul 201 în următoarea structură, Directory.GetCurrentDirectory() returnează stores\201:

📂 stores
    📂 201

Lucrul cu directoare speciale

.NET rulează peste tot: pe Windows, macOS, Linux și chiar pe sisteme de operare mobile, cum ar fi iOS și Android. Fiecare sistem de operare poate avea sau nu conceptul de foldere de sistem speciale (cum ar fi un director de pornire, care este dedicat fișierelor specifice utilizatorului- sau un director desktop sau un director pentru stocarea fișierelor temporare).

Aceste tipuri de directoare speciale diferă pentru fiecare sistem de operare. Ar fi dificil să încercați să rețineți structura directorului fiecărui sistem de operare și să efectuați comutatoare bazate pe sistemul de operare curent.

Enumerarea System.Environment.SpecialFolder specifică constantele de regăsit căi la folderele de sistem speciale.

Următorul cod returnează calea la echivalentul folderului Windows Documentele mele sau la directorul HOME al utilizatorului pentru orice sistem de operare, chiar dacă codul rulează pe Linux:

string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

Lucrul cu căile

Căile sunt un subiect care apare atât de frecvent, încât .NET include o clasă numită Path special pentru lucrul cu acestea.

Clasa Path se află în spațiul de nume System.IO al .NET și nu trebuie instalat.

Caractere cale specială

Sisteme de operare diferite utilizează caractere diferite pentru a separa nivelurile directorului.

De exemplu, Windows utilizează bara oblică inversă (stores\201) și macOS utilizează bara oblică (stores/201).

Pentru a vă ajuta să utilizați caracterul corect, clasa Path conține câmpul DirectorySeparatorChar.

.NET interpretează automat câmpul respectiv în caracterul separator aplicabil sistemului de operare atunci când trebuie să construiți manual o cale.

Console.WriteLine($"stores{Path.DirectorySeparatorChar}201");

// returns:
// stores\201 on Windows
//
// stores/201 on macOS

Căi de asociere

Clasa Path funcționează cu conceptul de căi pentru fișiere și foldere, care sunt doar șiruri. Puteți utiliza clasa Path pentru a construi automat căi corecte pentru anumite sisteme de operare.

De exemplu, dacă doriți să obțineți calea către folderul store/201, puteți utiliza funcția Path.Combine pentru a face acest lucru.

Console.WriteLine(Path.Combine("stores","201")); // outputs: stores/201

Rețineți, ar trebui să utilizați Path.Combine sau clasa de Path.DirectorySeparatorChar în locul șirurilor de codare hard-cod, deoarece este posibil ca programul să ruleze pe mai multe sisteme de operare diferite. Clasa Path formatează întotdeauna căile corect pentru sistemul de operare pe care rulează.

Sfat

Clasa Path nu-i pasă dacă există de fapt lucruri. Căile sunt conceptuale, nu fizice, iar clasa construiește și analizează șiruri pentru dvs.

Determinarea extensiilor de nume de fișier

Clasa Path vă poate spune și extensia unui nume de fișier. Dacă aveți un fișier și doriți să știți dacă este un fișier JSON, puteți utiliza funcția Path.GetExtension.

Console.WriteLine(Path.GetExtension("sales.json")); // outputs: .json

Obțineți tot ce trebuie să știți despre un fișier sau o cale

Clasa Path conține multe metode diferite care fac diverse lucruri. Puteți obține cele mai multe informații despre un director sau un fișier utilizând cursurile de DirectoryInfo sau FileInfo.

string fileName = $"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales{Path.DirectorySeparatorChar}sales.json";

FileInfo info = new FileInfo(fileName);

Console.WriteLine($"Full Name: {info.FullName}{Environment.NewLine}Directory: {info.Directory}{Environment.NewLine}Extension: {info.Extension}{Environment.NewLine}Create Date: {info.CreationTime}"); // And many more

Există multe proprietăți și metode utilitare mai utile pe Path, DirectoryInfoși clasele de FileInfo, dar aceste concepte de bază sunt cele pe care cel mai probabil le utilizați cel mai des. În următorul exercițiu, veți compune căi și veți identifica fișierele .json.