Praca ze ścieżkami plików na platformie .NET

Ukończone

Platforma .NET ma wbudowany mechanizm do pracy ze ścieżkami systemu plików.

W poprzednim ćwiczeniu nie mieliśmy wielu folderów do przeanalizowana. Jeśli masz system plików z wieloma plikami i folderami, ręczne tworzenie ścieżek może być żmudne. Na szczęście platforma .NET udostępnia pewne wbudowane stałe i funkcje narzędziowe, aby ułatwić obsługę ścieżek plików.

W tym miejscu poznasz niektóre stałe i funkcje narzędziowe w System.IO przestrzeni nazw oraz System.Environment typ, dzięki czemu program będzie inteligentniejszy i bardziej odporny.

Określanie bieżącego katalogu

Czasami nie wiadomo, w którym katalogu lub ścieżce powinien zostać uruchomiony program. Załóżmy, że chcesz, aby program używał bieżącego katalogu, ale nie znasz ścieżki.

Platforma .NET uwidacznia pełną ścieżkę bieżącego katalogu za pośrednictwem metody Directory.GetCurrentDirectory.

Console.WriteLine(Directory.GetCurrentDirectory());

Jeśli uruchomisz poprzedni kod z folderu 201 w następującej strukturze, Directory.GetCurrentDirectory() zwraca wartość stores\201:

📂 stores
    📂 201

Praca z katalogami specjalnymi

Platforma .NET działa wszędzie: w systemach Windows, macOS, Linux, a nawet w systemach operacyjnych mobilnych, takich jak iOS i Android. Każdy system operacyjny może lub nie może mieć pojęcia specjalnych folderów systemowych (takich jak katalog macierzysty , który jest przeznaczony dla plików specyficznych dla użytkownika— lub katalog pulpitu lub katalog do przechowywania plików tymczasowych).

Te typy katalogów specjalnych różnią się dla każdego systemu operacyjnego. Byłoby kłopotliwe, aby spróbować zapamiętać strukturę katalogów każdego systemu operacyjnego i wykonywać przełączniki na podstawie bieżącego systemu operacyjnego.

Wyliczenie System.Environment.SpecialFolder określa stałe do pobrania ścieżek do specjalnych folderów systemowych.

Poniższy kod zwraca ścieżkę do odpowiednika folderu Moje dokumenty systemu Windows lub katalogu HOME użytkownika dla dowolnego systemu operacyjnego, nawet jeśli kod jest uruchomiony w systemie Linux:

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

Praca ze ścieżkami

Ścieżki są tematem, który pojawia się tak często, że platforma .NET zawiera klasę o nazwie Path specjalnie do pracy z nimi.

Klasa Path znajduje się w System.IO przestrzeni nazw platformy .NET i nie musi być zainstalowana.

Znaki specjalne ścieżki

W różnych systemach operacyjnych poziomy katalogów są oddzielane różnymi znakami.

Na przykład system Windows używa ukośnika odwrotnego (stores\201), a system macOS używa ukośnika (stores/201).

Aby pomóc Ci użyć właściwego znaku, klasa Path zawiera pole DirectorySeparatorChar.

Platforma .NET automatycznie interpretuje to pole w znak separatora, który ma zastosowanie do systemu operacyjnego, gdy trzeba ręcznie utworzyć ścieżkę.

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

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

Ścieżki sprzężeń

Klasa Path pracuje przy użyciu koncepcji ścieżek plików i folderów, które są po prostu ciągami. Możesz użyć Path klasy , aby automatycznie tworzyć poprawne ścieżki dla określonych systemów operacyjnych.

Jeśli na przykład chcesz uzyskać ścieżkę do folderu stores/201, możesz użyć klasyPath.Combine.

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

Pamiętaj, że należy użyć Path.Combine klasy lub Path.DirectorySeparatorChar zamiast ciągów zakodowanych na stałe, ponieważ program może działać w wielu różnych systemach operacyjnych. Klasa Path zawsze formatuje ścieżki poprawnie dla systemu operacyjnego, na którym jest uruchomiona.

Napiwek

Klasa Path nie obchodzi, czy rzeczy rzeczywiście istnieją. Ścieżki są koncepcyjne, a nie fizyczne, a klasa kompiluje i analizuje ciągi.

Określanie rozszerzeń nazw plików

Klasa Path może również poinformować o rozszerzeniu nazwy pliku. Jeśli masz plik i chcesz wiedzieć, czy jest to plik JSON, możesz użyć Path.GetExtension funkcji .

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

Uzyskiwanie wszystkiego, co musisz wiedzieć o pliku lub ścieżce

Klasa Path zawiera wiele różnych metod o różnym działaniu. Największą ilość informacji o katalogu lub pliku można uzyskać, używając odpowiednio klas DirectoryInfo lub 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

Istnieje wiele bardziej przydatnych właściwości i metod narzędziowych w Pathklasach , DirectoryInfoi FileInfo , ale te podstawowe pojęcia to te, których prawdopodobnie używasz najczęściej. W następnym ćwiczeniu utworzysz ścieżki i zidentyfikujesz pliki json.