Udostępnij za pośrednictwem


We/Wy plików i strumieni

Termin „We/Wy (wejście/wyjście) plików i strumieni” dotyczy transferu danych do lub z nośnika magazynowania. Na platformie .NET przestrzenie nazw zawierają typy, System.IO które umożliwiają odczytywanie i zapisywanie zarówno synchronicznie, jak i asynchronicznie na strumieniach danych i plikach. Te przestrzenie nazw zawierają również typy, które wykonują kompresję i dekompresję plików, oraz typy, które umożliwiają komunikację za pośrednictwem potoków i portów szeregowych.

Plik to uporządkowana i nazwana kolekcja bajtów, która ma stały magazyn. Podczas pracy z plikami użytkownik pracuje ze ścieżkami katalogów, magazynem dysku oraz nazwami plików i katalogów. Natomiast strumień to sekwencja bajtów służąca do odczytu i zapisu w magazynie zapasowym, który może być jednym z kilku nośników magazynu (na przykład dysk lub pamięć). Tak jak istnieje kilka magazynów zapasowych innych niż dyski, tak samo istnieje kilka rodzajów strumieni innych niż strumienie plików, takie jak strumienie sieci, pamięci i potoku.

Pliki i katalogi

Typy w System.IO przestrzeni nazw można używać do interakcji z plikami i katalogami. Na przykład można pobierać i ustawiać właściwości plików i katalogów oraz pobierać kolekcje plików i katalogów na podstawie kryteriów wyszukiwania.

Aby uzyskać konwencje nazewnictwa ścieżek i sposoby wyrażania ścieżki pliku dla systemów Windows, w tym ze składnią urządzenia DOS obsługiwaną w programach .NET Core 1.1 i nowszych i .NET Framework 4.6.2 lub nowszych, zobacz Formaty ścieżek plików w systemach Windows.

Poniżej przedstawiono kilka powszechnie używanych klas związanych z plikami i katalogami:

  • File — udostępnia metody statyczne tworzenia, kopiowania, usuwania, przenoszenia i otwierania FileStream plików oraz ułatwia tworzenie obiektu.

  • FileInfo — udostępnia metody tworzenia, kopiowania, usuwania, przenoszenia i otwierania FileStream plików oraz ułatwia tworzenie obiektu.

  • Directory — udostępnia metody statyczne do tworzenia, przenoszenia i wyliczania za pomocą katalogów i podkatalogów.

  • DirectoryInfo — udostępnia metody wystąpień do tworzenia, przenoszenia i wyliczania za pomocą katalogów i podkatalogów.

  • Path — udostępnia metody i właściwości przetwarzania ciągów katalogu w sposób międzyplatformowy.

Zawsze należy zapewnić niezawodną obsługę wyjątków podczas wywoływania metod systemu plików. Aby uzyskać więcej informacji, zobacz Obsługa błędów we/wy.

Oprócz używania tych klas użytkownicy Visual Basic mogą używać metod i właściwości udostępnianych przez klasę Microsoft.VisualBasic.FileIO.FileSystem dla operacji we/wy pliku.

Zobacz Instrukcje: kopiowanie katalogów, instrukcje: tworzenie listy katalogów i instrukcje: wyliczanie katalogów i plików.

Strumienie

Abstrakcyjna klasa Stream bazowa obsługuje odczytywanie i zapisywanie bajtów. Wszystkie klasy reprezentujące strumienie dziedziczą po Stream klasie. Klasa Stream i jej klasy pochodne zapewniają wspólny widok źródeł danych i repozytoriów oraz izolować programistę od konkretnych szczegółów systemu operacyjnego i podstawowych urządzeń.

Strumienie obejmują trzy podstawowe operacje:

  • Odczyt — transfer danych ze strumienia do struktury danych, takiej jak tablica bajtów.

  • Zapis — transfer danych ze strumienia do źródła danych.

  • Wyszukiwanie — badanie i modyfikowanie bieżącej pozycji w strumieniu.

W zależności od podstawowego źródła danych lub repozytorium, strumień może obsługiwać tylko niektóre z tych możliwości. Na przykład PipeStream klasa nie obsługuje wyszukiwania. Właściwości CanRead, CanWritei CanSeek strumienia określają operacje obsługiwane przez strumień.

Poniżej przedstawiono niektóre powszechnie używane klasy strumieni:

  • FileStream – do odczytywania i zapisywania w pliku.

  • IsolatedStorageFileStream — do odczytywania i zapisywania w pliku w izolowanym magazynie.

  • MemoryStream – do odczytywania i zapisywania w pamięci jako magazynu zaplecza.

  • BufferedStream – w celu poprawy wydajności operacji odczytu i zapisu.

  • NetworkStream – do czytania i pisania za pośrednictwem gniazd sieciowych.

  • PipeStream – do czytania i pisania przez anonimowe i nazwane potoki.

  • CryptoStream — do łączenia strumieni danych z przekształceniami kryptograficznymi.

Przykład pracy ze strumieniami asynchronicznie można znaleźć w temacie Asynchronous File I/O (Operacje we/wy pliku asynchronicznego).

Czytelnicy i pisarze

System.IO Przestrzeń nazw udostępnia również typy odczytywania zakodowanych znaków ze strumieni i zapisywania ich w strumieniach. Zazwyczaj strumienie są projektowane do obsługi bajtowych danych wejściowych i wyjściowych. Typy czytników i składników zapisywania obsługują konwersję zakodowanych znaków do i z postaci bajtowej, więc strumień może ukończyć operację. Każda klasa czytelnika i składnika zapisywania jest skojarzona ze strumieniem, który można pobrać za pośrednictwem właściwości klasy BaseStream .

Poniżej przedstawiono niektóre powszechnie używane klasy czytników i składników zapisywania:

  • BinaryReader i BinaryWriter — do odczytywania i zapisywania pierwotnych typów danych jako wartości binarnych.

  • StreamReader i StreamWriter — do odczytywania i zapisywania znaków przy użyciu wartości kodowania, aby przekonwertować znaki na i z bajtów.

  • StringReader i StringWriter — do odczytywania i pisania znaków do i z ciągów.

  • TextReader i TextWriter — służy jako abstrakcyjne klasy bazowe dla innych czytelników i pisarzy, które odczytują i zapisują znaki i ciągi, ale nie dane binarne.

Zobacz Instrukcje: odczytywanie tekstu z pliku, Instrukcje: zapisywanie tekstu w pliku, Instrukcje: odczytywanie znaków z ciągu oraz Instrukcje: zapisywanie znaków w ciągu.

Asynchroniczne operacje we/wy

Odczyt lub zapis dużej ilości danych może wymagać użycia wielu zasobów. Te zadania należy wykonywać asynchronicznie, jeśli aplikacja ma ciągle reagować na działania użytkownika. Podczas synchronicznych operacji We/Wy wątek interfejsu użytkownika jest blokowany, aż do zakończenia wykonywania zasobochłonnej operacji. Użyj asynchronicznych operacji we/wy podczas tworzenia aplikacji Windows 8.x Store, aby zapobiec tworzeniu wrażenia, że aplikacja przestała działać.

Asynchroniczne elementy członkowskie zawierają Async w nazwach, takie jak CopyToAsyncmetody , FlushAsync, ReadAsynci WriteAsync . Te metody są używane z słowami kluczowymi async i .await

Aby uzyskać więcej informacji, zobacz Asynchroniczne operacje we/wy plików.

Kompresja

Termin „kompresja” dotyczy procesu zmniejszania rozmiaru pliku, który ma być przechowywany. Dekompresja to proces wyodrębniania zawartości skompresowanego pliku, dzięki czemu będzie on miał format umożliwiający używanie go. System.IO.Compression Przestrzeń nazw zawiera typy kompresji i dekompresowania plików i strumieni.

Następujące klasy są często używane podczas kompresowania i dekompresowania plików i strumieni:

  • ZipArchive — do tworzenia i pobierania wpisów w archiwum zip.

  • ZipArchiveEntry — do reprezentowania skompresowanego pliku.

  • ZipFile — do tworzenia, wyodrębniania i otwierania skompresowanego pakietu.

  • ZipFileExtensions — do tworzenia i wyodrębniania wpisów w skompresowanym pakiecie.

  • DeflateStream — do kompresowania i dekompresowania strumieni przy użyciu algorytmu Deflate.

  • GZipStream — do kompresowania i dekompresowania strumieni w formacie danych gzip.

Zobacz Instrukcje: kompresowanie i wyodrębnianie plików.

Wydzielona pamięć masowa

Wydzielona pamięć masowa to mechanizm magazynu, który dostarcza izolację i bezpieczeństwo przez definiowanie ustandaryzowanych metod kojarzenia kodu z zapisanymi danymi. Ta pamięć masowa oferuje wirtualny system plików, który jest izolowany dla konkretnego użytkownika, zestawu i (opcjonalnie) domeny. Wydzielona pamięć masowa jest szczególnie użyteczna, gdy aplikacja nie ma uprawnień dostępu do plików użytkownika. Można zapisać ustawienia lub pliki aplikacji w sposób, który jest kontrolowany przez zasady zabezpieczeń komputera.

Izolowany magazyn nie jest dostępny dla aplikacji Windows 8.x Store. Zamiast tego należy używać klas danych aplikacji w Windows.Storage przestrzeni nazw. Aby uzyskać więcej informacji, zobacz Dane aplikacji.

Podczas implementowania wydzielonej pamięci masowej często używane są następujące klasy:

Zobacz Storage izolowane.

Operacje we/wy w aplikacjach ze sklepu Windows Store

Platforma .NET dla aplikacji ze sklepu Windows 8.x zawiera wiele typów odczytywania i zapisywania w strumieniach. Jednak ten zestaw nie zawiera wszystkich typów we/wy platformy .NET.

Podczas korzystania z operacji we/wy w aplikacjach Windows 8.x Store należy pamiętać o kilku ważnych różnicach:

W razie potrzeby można wykonywać konwersje między strumieniami programu .NET Framework i strumieniami środowiska wykonawczego systemu Windows. Aby uzyskać więcej informacji, zobacz How to: Convert Between .NET Framework Strumienie and środowisko wykonawcze systemu Windows Strumienie or WindowsRuntimeStreamExtensions.

Aby uzyskać więcej informacji na temat operacji we/wy w aplikacji Windows 8.x Store, zobacz Szybki start: odczytywanie i zapisywanie plików.

We/Wy i zabezpieczenia

W przypadku używania klas w System.IO przestrzeni nazw należy przestrzegać wymagań dotyczących zabezpieczeń systemu operacyjnego, takich jak listy kontroli dostępu (ACL), aby kontrolować dostęp do plików i katalogów. To wymaganie jest poza wszelkimi FileIOPermission wymaganiami. Listami ACL można zarządzać programowo. Aby uzyskać więcej informacji, zobacz How to: Add or Remove Access Control List Entries (Jak dodać lub usunąć wpisy listy Access Control).

Domyślne zasady zabezpieczeń uniemożliwiają aplikacjom internetowym lub intranetowym uzyskiwanie dostępu do plików na komputerze użytkownika. W związku z tym nie należy używać klas we/wy, które wymagają ścieżki do pliku fizycznego podczas pisania kodu, który zostanie pobrany za pośrednictwem Internetu lub intranetu. Zamiast tego należy użyć izolowanego magazynu dla aplikacji platformy .NET.

Sprawdzanie zabezpieczeń jest wykonywane tylko wtedy, gdy jest konstruowany strumień. W związku z tym nie należy otwierać strumienia, a następnie przekazywać go do kodu lub domeny aplikacji o niższym poziomie zaufania.

  • Typowe zadania we/wy
    Lista zadań We/Wy skojarzonych z plikami, katalogami, i strumieniami oraz łącza do odpowiedniej zawartości i przykładów dla każdego zadania.

  • Asynchroniczne operacje we/wy pliku
    Opis korzyści związanych z wydajnością oraz podstawowych asynchronicznych operacji We/Wy.

  • Izolowana Storage
    Opis mechanizmu pamięci masowej danych, który dostarcza izolację i bezpieczeństwo przez definiowanie ustandaryzowanych opcji kojarzenia kodu z zapisanymi danymi.

  • Potoki
    Opisuje anonimowe i nazwane operacje potoku na platformie .NET.

  • Pliki mapowane na pamięć
    Opis plików zamapowanych w pamięci, które zawierają zawartość plików znajdujących się na dysku w pamięci wirtualnej. Zamapowanych w pamięci plików można używać, aby edytować bardzo duże pliki i tworzyć współużytkowaną pamięć służącą do komunikacji między procesami.