We/Wy plików i strumieniFile and Stream I/O

Termin „We/Wy (wejście/wyjście) plików i strumieni” dotyczy transferu danych do lub z nośnika magazynowania.File and stream I/O (input/output) refers to the transfer of data either to or from a storage medium. W platformie .NET System.IO Framework przestrzenie nazw zawierają typy, które umożliwiają odczyt i zapis, zarówno synchronicznie, jak i asynchronicznie, w strumieniach danych i plikach.In the .NET Framework, the System.IO namespaces contain types that enable reading and writing, both synchronously and asynchronously, on data streams and files. 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.These namespaces also contain types that perform compression and decompression on files, and types that enable communication through pipes and serial ports.

Plik to uporządkowana i nazwana kolekcja bajtów, która ma stały magazyn.A file is an ordered and named collection of bytes that has persistent storage. Podczas pracy z plikami użytkownik pracuje ze ścieżkami katalogów, magazynem dysku oraz nazwami plików i katalogów.When you work with files, you work with directory paths, disk storage, and file and directory names. 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ęć).In contrast, a stream is a sequence of bytes that you can use to read from and write to a backing store, which can be one of several storage mediums (for example, disks or memory). 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.Just as there are several backing stores other than disks, there are several kinds of streams other than file streams, such as network, memory, and pipe streams.

Pliki i katalogiFiles and directories

Typy w obszarze System.IO nazw można używać do interakcji z plikami i katalogami.You can use the types in the System.IO namespace to interact with files and directories. 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.For example, you can get and set properties for files and directories, and retrieve collections of files and directories based on search criteria.

Aby zapoznać się z konwencjami nazewnictwa ścieżek i sposobami wyrażania ścieżki pliku dla systemów Windows, w tym ze składnią urządzenia DOS obsługiwaną w programie .NET Core 1.1 i nowszych oraz w programie .NET Framework 4.6.2 i nowszych, zobacz Formaty ścieżek plików w systemach Windows.For path naming conventions and the ways to express a file path for Windows systems, including with the DOS device syntax supported in .NET Core 1.1 and later and the .NET Framework 4.6.2 and later, see File path formats on Windows systems.

Poniżej przedstawiono kilka powszechnie używanych klas związanych z plikami i katalogami:Here are some commonly used file and directory classes:

  • File- zapewnia statyczne metody tworzenia, kopiowania, usuwania, przenoszenia i otwierania plików oraz pomaga w tworzeniu FileStream obiektu.File - provides static methods for creating, copying, deleting, moving, and opening files, and helps create a FileStream object.

  • FileInfo- udostępnia metody instancji do tworzenia, kopiowania, usuwania, przenoszenia FileStream i otwierania plików oraz pomaga utworzyć obiekt.FileInfo - provides instance methods for creating, copying, deleting, moving, and opening files, and helps create a FileStream object.

  • Directory- zapewnia statyczne metody tworzenia, przenoszenia i wyliczania za pośrednictwem katalogów i podkatalogów.Directory - provides static methods for creating, moving, and enumerating through directories and subdirectories.

  • DirectoryInfo- udostępnia metody instancji do tworzenia, przenoszenia i wyliczania za pośrednictwem katalogów i podkatalogów.DirectoryInfo - provides instance methods for creating, moving, and enumerating through directories and subdirectories.

  • Path- udostępnia metody i właściwości przetwarzania ciągów katalogów w sposób wieloplatformowy.Path - provides methods and properties for processing directory strings in a cross-platform manner.

Podczas wywoływania metod systemu plików należy zawsze zapewnić niezawodną obsługę wyjątków.You should always provide robust exception handling when calling filesystem methods. Aby uzyskać więcej informacji, zobacz Obsługa błędów we/wy.For more information, see Handling I/O errors.

Oprócz korzystania z tych klas użytkownicy języka Visual Basic mogą używać Microsoft.VisualBasic.FileIO.FileSystem metod i właściwości dostarczonych przez klasę dla we/wy pliku.In addition to using these classes, Visual Basic users can use the methods and properties provided by the Microsoft.VisualBasic.FileIO.FileSystem class for file I/O.

Zobacz Jak: Kopiowanie katalogów, Jak: Tworzenie listy katalogówi Jak: Wyliczanie katalogów i plików.See How to: Copy Directories, How to: Create a Directory Listing, and How to: Enumerate Directories and Files.

StrumienieStreams

Abstrakcyjna klasa Stream podstawowa obsługuje odczytianie i pisanie bajtów.The abstract base class Stream supports reading and writing bytes. Wszystkie klasy reprezentujące strumienie Stream dziedziczą z klasy.All classes that represent streams inherit from the Stream class. Klasa Stream i jej klasy pochodne zapewniają wspólny widok źródeł danych i repozytoriów oraz izolować programistę od szczegółowych informacji o systemie operacyjnym i urządzeniach źródłowych.The Stream class and its derived classes provide a common view of data sources and repositories, and isolate the programmer from the specific details of the operating system and underlying devices.

Strumienie obejmują trzy podstawowe operacje:Streams involve three fundamental operations:

  • Odczyt — transfer danych ze strumienia do struktury danych, takiej jak tablica bajtów.Reading - transferring data from a stream into a data structure, such as an array of bytes.

  • Zapis — transfer danych ze strumienia do źródła danych.Writing - transferring data to a stream from a data source.

  • Wyszukiwanie — badanie i modyfikowanie bieżącej pozycji w strumieniu.Seeking - querying and modifying the current position within a stream.

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.Depending on the underlying data source or repository, a stream might support only some of these capabilities. Na przykład PipeStream klasa nie obsługuje szukania.For example, the PipeStream class does not support seeking. , CanRead CanWritei CanSeek właściwości strumienia określić operacje, które obsługuje strumień.The CanRead, CanWrite, and CanSeek properties of a stream specify the operations that the stream supports.

Poniżej przedstawiono niektóre powszechnie używane klasy strumieni:Here are some commonly used stream classes:

  • FileStream– do czytania i zapisu do pliku.FileStream – for reading and writing to a file.

  • IsolatedStorageFileStream– do czytania i zapisu do pliku w izolowanym magazynie.IsolatedStorageFileStream – for reading and writing to a file in isolated storage.

  • MemoryStream– do czytania i zapisywania w pamięci jako magazynu podkładowego.MemoryStream – for reading and writing to memory as the backing store.

  • BufferedStream– dla poprawy wydajności operacji odczytu i zapisu.BufferedStream – for improving performance of read and write operations.

  • NetworkStream– do czytania i pisania przez gniazda sieciowe.NetworkStream – for reading and writing over network sockets.

  • PipeStream– do czytania i pisania za anonimowych i nazwanych potoków.PipeStream – for reading and writing over anonymous and named pipes.

  • CryptoStream– do łączenia strumieni danych z przekształceniami kryptograficznymi.CryptoStream – for linking data streams to cryptographic transformations.

Na przykład pracy ze strumieniami asynchronicznie zobacz Asynchroniczne we/wy pliku.For an example of working with streams asynchronously, see Asynchronous File I/O.

Czytelnicy i pisarzeReaders and writers

Obszar System.IO nazw zawiera również typy do odczytywania zakodowanych znaków ze strumieni i zapisywania ich do strumieni.The System.IO namespace also provides types for reading encoded characters from streams and writing them to streams. Zazwyczaj strumienie są projektowane do obsługi bajtowych danych wejściowych i wyjściowych.Typically, streams are designed for byte input and output. 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ę.The reader and writer types handle the conversion of the encoded characters to and from bytes so the stream can complete the operation. Każda klasa czytnika i modułu zapisującego jest skojarzona BaseStream ze strumieniem, który można pobrać za pośrednictwem właściwości klasy.Each reader and writer class is associated with a stream, which can be retrieved through the class's BaseStream property.

Poniżej przedstawiono niektóre powszechnie używane klasy czytników i składników zapisywania:Here are some commonly used reader and writer classes:

  • BinaryReaderoraz BinaryWriter – do odczytywania i zapisywania pierwotnych typów danych jako wartości binarnych.BinaryReader and BinaryWriter – for reading and writing primitive data types as binary values.

  • StreamReaderoraz StreamWriter – do odczytywania i pisania znaków przy użyciu wartości kodowania do konwertowania znaków do i z bajtów.StreamReader and StreamWriter – for reading and writing characters by using an encoding value to convert the characters to and from bytes.

  • StringReaderoraz StringWriter – do czytania i pisania znaków do i z ciągów.StringReader and StringWriter – for reading and writing characters to and from strings.

  • TextReaderi TextWriter — służyć jako abstrakcyjne klasy podstawowe dla innych czytelników i pisarzy, które odczytują i zapisują znaki i ciągi, ale nie dane binarne.TextReader and TextWriter – serve as the abstract base classes for other readers and writers that read and write characters and strings, but not binary data.

Zobacz jak: Czytać tekst z pliku, Jak: Pisanie tekstu do pliku, Jak: Odczytywanie znaków z ciągui Jak: Pisanie znaków do ciągu.See How to: Read Text from a File, How to: Write Text to a File, How to: Read Characters from a String, and How to: Write Characters to a String.

Operacje we/wy asynchronicznejAsynchronous I/O operations

Odczyt lub zapis dużej ilości danych może wymagać użycia wielu zasobów.Reading or writing a large amount of data can be resource-intensive. Te zadania należy wykonywać asynchronicznie, jeśli aplikacja ma ciągle reagować na działania użytkownika.You should perform these tasks asynchronously if your application needs to remain responsive to the user. Podczas synchronicznych operacji We/Wy wątek interfejsu użytkownika jest blokowany, aż do zakończenia wykonywania zasobochłonnej operacji.With synchronous I/O operations, the UI thread is blocked until the resource-intensive operation has completed. Podczas tworzenia aplikacji ze Sklepu Windows 8.x używaj operacji asynchronicznych, aby zapobiec tworzeniu wrażenia, że aplikacja przestała działać.Use asynchronous I/O operations when developing Windows 8.x Store apps to prevent creating the impression that your app has stopped working.

Asynchroniczne elementy Async członkowskie zawierają w swoich CopyToAsync FlushAsyncnazwach, takie jak , , ReadAsync, i WriteAsync metody.The asynchronous members contain Async in their names, such as the CopyToAsync, FlushAsync, ReadAsync, and WriteAsync methods. Używasz tych metod ze async await słowami kluczowymi i.You use these methods with the async and await keywords.

Aby uzyskać więcej informacji, zobacz Asynchronous File We/Wy.For more information, see Asynchronous File I/O.

KompresjaCompression

Termin „kompresja” dotyczy procesu zmniejszania rozmiaru pliku, który ma być przechowywany.Compression refers to the process of reducing the size of a file for storage. Dekompresja to proces wyodrębniania zawartości skompresowanego pliku, dzięki czemu będzie on miał format umożliwiający używanie go.Decompression is the process of extracting the contents of a compressed file so they are in a usable format. Obszar System.IO.Compression nazw zawiera typy kompresji i dekompresji plików i strumieni.The System.IO.Compression namespace contains types for compressing and decompressing files and streams.

Następujące klasy są często używane podczas kompresowania i dekompresowania plików i strumieni:The following classes are frequently used when compressing and decompressing files and streams:

  • ZipArchive– do tworzenia i pobierania wpisów w archiwum zip.ZipArchive – for creating and retrieving entries in the zip archive.

  • ZipArchiveEntry– do reprezentowania skompresowanego pliku.ZipArchiveEntry – for representing a compressed file.

  • ZipFile– do tworzenia, wydobywania i otwierania skompresowanego opakowania.ZipFile – for creating, extracting, and opening a compressed package.

  • ZipFileExtensions– do tworzenia i wyodrębniania wpisów w pakiecie skompresowanym.ZipFileExtensions – for creating and extracting entries in a compressed package.

  • DeflateStream– do kompresji i dekompresji strumieni za pomocą algorytmu Deflate.DeflateStream – for compressing and decompressing streams using the Deflate algorithm.

  • GZipStream– do kompresji i dekompresji strumieni w formacie danych gzip.GZipStream – for compressing and decompressing streams in gzip data format.

Zobacz jak: Kompresować i wyodrębniać pliki.See How to: Compress and Extract Files.

Magazyn odizolowanyIsolated storage

Wydzielona pamięć masowa to mechanizm magazynu, który dostarcza izolację i bezpieczeństwo przez definiowanie ustandaryzowanych metod kojarzenia kodu z zapisanymi danymi.Isolated storage is a data storage mechanism that provides isolation and safety by defining standardized ways of associating code with saved data. Ta pamięć masowa oferuje wirtualny system plików, który jest izolowany dla konkretnego użytkownika, zestawu i (opcjonalnie) domeny.The storage provides a virtual file system that is isolated by user, assembly, and (optionally) domain. Wydzielona pamięć masowa jest szczególnie użyteczna, gdy aplikacja nie ma uprawnień dostępu do plików użytkownika.Isolated storage is particularly useful when your application does not have permission to access user files. Można zapisać ustawienia lub pliki aplikacji w sposób, który jest kontrolowany przez zasady zabezpieczeń komputera.You can save settings or files for your application in a manner that is controlled by the computer's security policy.

Izolowana pamięć nie jest dostępna dla aplikacji ze Sklepu Windows 8.x; Zamiast tego należy użyć Windows.Storage klas danych aplikacji w obszarze nazw.Isolated storage is not available for Windows 8.x Store apps; instead, use application data classes in the Windows.Storage namespace. Aby uzyskać więcej informacji, zobacz Dane aplikacji.For more information, see Application data.

Podczas implementowania wydzielonej pamięci masowej często używane są następujące klasy:The following classes are frequently used when implementing isolated storage:

Zobacz Izolowany magazyn.See Isolated Storage.

Operacje we/wy w aplikacjach ze Sklepu WindowsI/O operations in Windows Store apps

Aplikacje .NET dla systemu Windows 8.x Store zawierają wiele typów do odczytu i zapisu do strumieni; Jednak ten zestaw nie zawiera wszystkich typów we/wy .NET Framework.The .NET for Windows 8.x Store apps contains many of the types for reading from and writing to streams; however, this set does not include all the .NET Framework I/O types.

Niektóre ważne różnice, które należy zauważyć podczas korzystania z operacji we/wy w aplikacjach ze Sklepu Windows 8.x:Some important differences to note when using I/O operations in Windows 8.x Store apps:

W razie potrzeby można wykonywać konwersje między strumieniami programu .NET Framework i strumieniami środowiska wykonawczego systemu Windows.You can convert between .NET Framework streams and Windows Runtime streams, if necessary. Aby uzyskać więcej informacji, zobacz Jak: Konwertować między strumieniami programu .NET Framework i strumieniami środowiska uruchomieniowego systemu Windows lub WindowsRuntimeStreamExtensions.For more information, see How to: Convert Between .NET Framework Streams and Windows Runtime Streams or WindowsRuntimeStreamExtensions.

Aby uzyskać więcej informacji na temat operacji we/wy w aplikacji ze Sklepu Windows 8.x, zobacz Szybki start: Odczytywanie i zapisywanie plików.For more information about I/O operations in a Windows 8.x Store app, see Quickstart: Reading and writing files.

We/Wy i bezpieczeństwoI/O and security

Korzystając z klas w System.IO obszarze nazw, należy przestrzegać wymagań zabezpieczeń systemu operacyjnego, takich jak listy kontroli dostępu (ACL), aby kontrolować dostęp do plików i katalogów.When you use the classes in the System.IO namespace, you must follow operating system security requirements such as access control lists (ACLs) to control access to files and directories. Wymóg ten jest uzupełniony o wszelkie FileIOPermission wymagania.This requirement is in addition to any FileIOPermission requirements. Listami ACL można zarządzać programowo.You can manage ACLs programmatically. Aby uzyskać więcej informacji, zobacz Jak: Dodawanie lub usuwanie wpisów listy kontroli dostępu.For more information, see How to: Add or Remove Access Control List Entries.

Domyślne zasady zabezpieczeń uniemożliwiają aplikacjom internetowym i intranetowym dostęp do plików na komputerze użytkownika.Default security policies prevent Internet or intranet applications from accessing files on the user’s computer. W związku z tym podczas pisania kodu, który zostanie pobrany przez Internet lub intranet, nie należy używać klas We/Wy, które wymagają ścieżki do pliku fizycznego.Therefore, do not use the I/O classes that require a path to a physical file when writing code that will be downloaded over the Internet or intranet. Zamiast tego należy użyć izolowanego magazynu dla tradycyjnych aplikacji .NET Framework lub użyć danych aplikacji dla aplikacji ze Sklepu Windows 8.x.Instead, use isolated storage for traditional .NET Framework applications, or use application data for Windows 8.x Store apps.

Sprawdzanie zabezpieczeń jest wykonywane tylko wtedy, gdy jest konstruowany strumień.A security check is performed only when the stream is constructed. 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.Therefore, do not open a stream and then pass it to less-trusted code or application domains.

  • Typowe zadania we/wyCommon I/O Tasks
    Lista zadań We/Wy skojarzonych z plikami, katalogami, i strumieniami oraz łącza do odpowiedniej zawartości i przykładów dla każdego zadania.Provides a list of I/O tasks associated with files, directories, and streams, and links to relevant content and examples for each task.

  • We/Wy pliku asynchronicznegoAsynchronous File I/O
    Opis korzyści związanych z wydajnością oraz podstawowych asynchronicznych operacji We/Wy.Describes the performance advantages and basic operation of asynchronous I/O.

  • Magazyn izolowanyIsolated Storage
    Opis mechanizmu pamięci masowej danych, który dostarcza izolację i bezpieczeństwo przez definiowanie ustandaryzowanych opcji kojarzenia kodu z zapisanymi danymi.Describes a data storage mechanism that provides isolation and safety by defining standardized ways of associating code with saved data.

  • RuryPipes
    Opis operacji wykonywanych w anonimowych i nazwanych potokach w programie .NET Framework.Describes anonymous and named pipe operations in the .NET Framework.

  • Pliki mapowane w pamięciMemory-Mapped Files
    Opis plików zamapowanych w pamięci, które zawierają zawartość plików znajdujących się na dysku w pamięci wirtualnej.Describes memory-mapped files, which contain the contents of files on disk in virtual memory. 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.You can use memory-mapped files to edit very large files and to create shared memory for interprocess communication.