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 .NET Framework System.IO przestrzenie nazw zawierają typy umożliwiające odczyt lub zapis, synchronicznie i asynchronicznie, w strumieniach i plikach danych.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

Można używać typów z System.IO przestrzeni nazw 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.

Dla ścieżki konwencji nazewnictwa i sposoby express ścieżkę pliku dla systemów Windows, w tym za pomocą składni urządzenia systemu DOS, które są obsługiwane w programie .NET Core 1.1 i nowszych i .NET Framework 4.6.2 lub nowszy, zobacz formaty ścieżki 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 — zawiera metody statyczne służące do tworzenia, kopiowania, usuwania, przenoszenia i otwierania plików, a także pomaga utworzyć FileStream obiektu.File - provides static methods for creating, copying, deleting, moving, and opening files, and helps create a FileStream object.

  • FileInfo — zawiera metody wystąpień służące do tworzenia, kopiowania, usuwania, przenoszenia i otwierania plików, a także pomaga utworzyć FileStream obiektu.FileInfo - provides instance methods for creating, copying, deleting, moving, and opening files, and helps create a FileStream object.

  • Directory — zawiera metody statyczne służące do tworzenia, przenoszenia i wyliczania katalogów i podkatalogów.Directory - provides static methods for creating, moving, and enumerating through directories and subdirectories.

  • DirectoryInfo — zawiera metody wystąpień służące do tworzenia, przenoszenia i wyliczania katalogów i podkatalogów.DirectoryInfo - provides instance methods for creating, moving, and enumerating through directories and subdirectories.

  • Path — zawiera metody i właściwości przetwarzania ciągów katalogów w sposób dla wielu platform.Path - provides methods and properties for processing directory strings in a cross-platform manner.

Należy zawsze podawać niezawodne wyjątków, obsługa podczas wywoływania metody systemu plików.You should always provide robust exception handling when calling filesystem methods. Aby uzyskać więcej informacji, zobacz błędów obsługi We/Wy.For more information, see Handling I/O errors.

Oprócz tych klas, użytkowników programu Visual Basic można użyć metod i właściwości dostarczonych przez Microsoft.VisualBasic.FileIO.FileSystem klasy 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: Create a Directory Listing, i 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 bazowa Stream obsługuje Odczyt i zapis bajtów.The abstract base class Stream supports reading and writing bytes. Wszystkie klasy, które reprezentują strumienie, dziedziczą z Stream klasy.All classes that represent streams inherit from the Stream class. Stream Klasy i jej klasy pochodne oferują typowy widok źródeł danych i repozytoriów. Ponadto izolują programistę od specyficznych szczegółów systemu operacyjnego i podstawowych urządzeń.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 wyszukiwania.For example, the PipeStream class does not support seeking. CanRead, CanWrite, I CanSeek właściwości strumienia określają operacje obsługiwane przez 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 odczytu i zapisu do pliku.FileStream – for reading and writing to a file.

  • IsolatedStorageFileStream — do odczytu i zapisu do pliku w wydzielonej pamięci masowej.IsolatedStorageFileStream – for reading and writing to a file in isolated storage.

  • MemoryStream — do odczytu i zapisu w pamięci jako magazyn zapasowy.MemoryStream – for reading and writing to memory as the backing store.

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

  • NetworkStream — do odczytu i zapisu za pośrednictwem gniazd sieciowych.NetworkStream – for reading and writing over network sockets.

  • PipeStream — do odczytu i zapisu za pośrednictwem 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.

Aby uzyskać przykład pracy ze strumieniami asynchronicznie, zobacz asynchroniczne We/Wy.For an example of working with streams asynchronously, see Asynchronous File I/O.

Czytniki i moduły zapisująceReaders and writers

System.IO Przestrzeń nazw zawiera także typy do odczytywania zakodowanych znaków ze strumieni oraz zapisywania ich w strumieniach.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 czytników i składników zapisywania jest skojarzona ze strumieniem, który można pobrać za pośrednictwem klasy BaseStream właściwości.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:

  • BinaryReader i BinaryWriter — służy 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.

  • StreamReader i StreamWriter — służy do odczytywania i zapisywania znaków przy użyciu wartości kodowania w celu konwertowania znaków na 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.

  • StringReader i StringWriter — służy do odczytywania i zapisywania znaków, do i z ciągów znaków.StringReader and StringWriter – for reading and writing characters to and from strings.

  • TextReader i TextWriter — pełnić rolę abstrakcyjnych klas bazowych dla innych czytników i składników zapisywania, które odczytują i zapisują znaki oraz 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: Odczytywanie tekstu z pliku, jak: Zapisywanie tekstu do pliku, jak: Odczytywanie znaków z ciągu, i jak: Zapisywanie znaków w 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.

Asynchroniczne operacje We/WyAsynchronous 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. Użyj operacji asynchronicznych operacji We/Wy podczas opracowywania Windows 8.x Store aplikacji można zapobiec powstawaniu wrażenia, że Twoja 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 Członkowskie zawierają Async w nazwach, takich jak CopyToAsync, FlushAsync, ReadAsync, i WriteAsync metody.The asynchronous members contain Async in their names, such as the CopyToAsync, FlushAsync, ReadAsync, and WriteAsync methods. Użycie tych metod z async i await słów kluczowych.You use these methods with the async and await keywords.

Aby uzyskać więcej informacji, zobacz asynchroniczne 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. System.IO.Compression Przestrzeń nazw zawiera typy służące do kompresowania i dekompresowania 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, wyodrębniania i otwierania skompresowanego pakietu.ZipFile – for creating, extracting, and opening a compressed package.

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

  • DeflateStream — do kompresowania i dekompresowania strumieni przy użyciu algorytmu Deflate.DeflateStream – for compressing and decompressing streams using the Deflate algorithm.

  • GZipStream — do kompresowania i dekompresowania strumieni w formacie danych gzip.GZipStream – for compressing and decompressing streams in gzip data format.

Zobacz jak: Kompresowanie i wyodrębnianie plików.See How to: Compress and Extract Files.

Wydzielona pamięć masowaIsolated 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.

Wydzielona pamięć masowa nie jest dostępna dla Windows 8.x Store aplikacji; zamiast tego należy użyć klas danych Windows.Storage przestrzeni 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 Isolated Storage.See Isolated Storage.

Operacje We/Wy w aplikacjach Windows StoreI/O operations in Windows Store apps

Platforma .NET dla aplikacji do Sklepu Windows 8.x.NET for Windows 8.x Store apps Zawiera wiele typów odczytywanie z oraz zapisywanie do strumieni; jednak ten zestaw nie obejmuje wszystkie typy operacji We/Wy programu .NET Framework.The Platforma .NET dla aplikacji do Sklepu Windows 8.x.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.

Kilka poważnych różnic, należy pamiętać, korzystając z operacji We/Wy w Windows 8.x Store aplikacji: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: Konwersja strumieni platformy .NET Framework i strumieni środowiska wykonawczego 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 Windows 8.x Store aplikacji, zobacz Szybki Start: Odczyt i zapis plików.For more information about I/O operations in a Windows 8.x Store app, see Quickstart: Reading and writing files.

Operacje We/Wy i zabezpieczeniaI/O and security

Kiedy używać klas w System.IO przestrzeni nazw, należy wykonać, wymagania dotyczące zabezpieczeń systemu operacyjnego takie jak listy kontroli dostępu (ACL) do kontrolowania dostępu 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. To wymaganie nie jest dodatek do wszelkich 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 pozycji 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ć isolated storage dla tradycyjnych aplikacji programu .NET Framework lub użyj dane aplikacji dla Windows 8.x Store aplikacji.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.

  • Asynchroniczne We/Wy plikuAsynchronous 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.

  • Wydzielona pamięć masowaIsolated 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.

  • PotokiPipes
    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.