I/O souborů a proudůFile and Stream I/O

Vstupem/výstupem souborů a datových proudů se rozumí přenos dat z úložného média nebo na něj.File and stream I/O (input/output) refers to the transfer of data either to or from a storage medium. V rozhraní .NET Framework System.IO obory názvů obsahují typy, které umožňují čtení a zápis, synchronně i asynchronně, na soubory a datovými proudy.In the .NET Framework, the System.IO namespaces contain types that enable reading and writing, both synchronously and asynchronously, on data streams and files. Tyto obory názvů obsahují také typy provádějící kompresi a dekompresi souborů a typy umožňující komunikaci pomocí kanálů a sériových portů.These namespaces also contain types that perform compression and decompression on files, and types that enable communication through pipes and serial ports.

Soubor je uspořádaná a pojmenovaná kolekce bajtů s trvalým úložištěm.A file is an ordered and named collection of bytes that has persistent storage. Pracujete-li se soubory, pracujete s cestami adresářů, diskovým úložištěm a názvy souborů a adresářů.When you work with files, you work with directory paths, disk storage, and file and directory names. Naproti tomu datový proud je posloupnost bajtů, kterou lze použít ke čtení nebo zápisu na záložní úložiště, jímž může být jedno nebo více úložných médií (například disky nebo paměť).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). Stejně jako existuje několik záložních úložišť jiných než disky, existuje několik druhů datových proudů jiných než datové proudy souborů, například proudy sítí, pamětí nebo kanálů.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.

Soubory a adresářeFiles and directories

Můžete použít typy v System.IO obor názvů pro interakci se soubory a adresáře.You can use the types in the System.IO namespace to interact with files and directories. Lze tak například načíst nebo nastavit vlastnosti souborů a adresářů nebo načíst kolekce souborů a adresářů na základě kritérií vyhledávání.For example, you can get and set properties for files and directories, and retrieve collections of files and directories based on search criteria.

Cesta konvence pojmenování a způsoby, jak vyjádřit cestu k souboru pro systémy Windows, včetně syntaxi zařízení DOS, podporuje se v .NET Core 1.1 nebo novější a rozhraní .NET Framework 4.6.2 nebo novější, najdete v článku cesta formáty souborů v systémech 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.

Zde jsou některé běžně používané třídy souborů a adresářů:Here are some commonly used file and directory classes:

  • File – poskytuje statické metody pro vytváření, kopírování, odstraňování, přesouvání a otevírání souborů a pomáhá vytvářet FileStream objektu.File - provides static methods for creating, copying, deleting, moving, and opening files, and helps create a FileStream object.

  • FileInfo – poskytuje instanční metody pro vytváření, kopírování, odstraňování, přesouvání a otevírání souborů a pomáhá vytvářet FileStream objektu.FileInfo - provides instance methods for creating, copying, deleting, moving, and opening files, and helps create a FileStream object.

  • Directory – poskytuje statické metody pro vytváření, přesouvání a vytváření výčtů adresářů a podadresářů.Directory - provides static methods for creating, moving, and enumerating through directories and subdirectories.

  • DirectoryInfo – poskytuje instanční metody pro vytváření, přesouvání a vytváření výčtů adresářů a podadresářů.DirectoryInfo - provides instance methods for creating, moving, and enumerating through directories and subdirectories.

  • Path – poskytuje metody a vlastnosti pro zpracování řetězců adresářů způsobem napříč platformami.Path - provides methods and properties for processing directory strings in a cross-platform manner.

Vždy byste měli poskytnout robustní zpracování při volání metody systému souborů výjimek.You should always provide robust exception handling when calling filesystem methods. Další informace najdete v tématu vstupně-výstupních operací zpracování chyb.For more information, see Handling I/O errors.

Kromě použití těchto tříd, uživatelé jazyka Visual Basic můžete použít metody a vlastnosti poskytované třídou Microsoft.VisualBasic.FileIO.FileSystem třídy pro soubor vstupně-výstupních operací.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.

Zobrazit jak: Kopírování adresářů, jak: Create a Directory Listing, a jak: Vytvoření výčtu adresářů a souborů.See How to: Copy Directories, How to: Create a Directory Listing, and How to: Enumerate Directories and Files.

Datové proudyStreams

Abstraktní základní třída Stream podporuje čtení a zápis bajtů.The abstract base class Stream supports reading and writing bytes. Dědí všechny třídy, které představují datové proudy Stream třídy.All classes that represent streams inherit from the Stream class. Stream Třída a odvozené třídy poskytují běžné zobrazení datových zdrojů a úložišť a izolují programátora od konkrétních podrobností operačního systému a použitých zařízení.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.

Datové proudy zahrnují tři základní operace:Streams involve three fundamental operations:

  • Čtení – přenos dat z datového proudu do datové struktury, například pole bajtů.Reading - transferring data from a stream into a data structure, such as an array of bytes.

  • Zápis – přenos dat ze zdroje dat do datového proudu.Writing - transferring data to a stream from a data source.

  • Hledání – dotazování a úprava současné pozice v datovém proudu.Seeking - querying and modifying the current position within a stream.

Datový proud může podporovat pouze některé z těchto možností v závislosti na použitém zdroji dat nebo úložišti.Depending on the underlying data source or repository, a stream might support only some of these capabilities. Například PipeStream třída nepodporuje vyhledávání.For example, the PipeStream class does not support seeking. CanRead, CanWrite, A CanSeek vlastnosti datového proudu určují operace, které podporuje datového proudu.The CanRead, CanWrite, and CanSeek properties of a stream specify the operations that the stream supports.

Toto jsou některé běžně používané třídy datového proudu:Here are some commonly used stream classes:

  • FileStream – pro čtení a zápis do souboru.FileStream – for reading and writing to a file.

  • IsolatedStorageFileStream – pro čtení a zápis do souboru v izolovaném úložišti.IsolatedStorageFileStream – for reading and writing to a file in isolated storage.

  • MemoryStream – pro čtení a zápis do paměti jako záložního úložiště.MemoryStream – for reading and writing to memory as the backing store.

  • BufferedStream – pro zvýšení výkonu pro čtení a zápisu operace.BufferedStream – for improving performance of read and write operations.

  • NetworkStream – pro čtení a zápis přes síťové sokety.NetworkStream – for reading and writing over network sockets.

  • PipeStream – pro čtení a zápis přes anonymní a pojmenované kanály.PipeStream – for reading and writing over anonymous and named pipes.

  • CryptoStream – pro propojení datových proudů na kryptografické transformace.CryptoStream – for linking data streams to cryptographic transformations.

Příklad asynchronní práce s datovými proudy naleznete v tématu asynchronní vstupně-výstupní operace souboru.For an example of working with streams asynchronously, see Asynchronous File I/O.

Čtečky a zapisovačeReaders and writers

System.IO Názvů také obsahuje typy pro čtení kódovaných znaků z datových proudů a jejich zápis do datových proudů.The System.IO namespace also provides types for reading encoded characters from streams and writing them to streams. Datové proudy jsou obvykle navrženy pro bajtový vstup a výstup.Typically, streams are designed for byte input and output. Typy čtečky a zapisovače zajišťují převod kódovaných znaků na bajty a zpět, aby datový proud mohl dokončit operaci.The reader and writer types handle the conversion of the encoded characters to and from bytes so the stream can complete the operation. Každá třída čtečky nebo zapisovače je přidružena k datovému proudu, které se dají získat pomocí třídy BaseStream vlastnost.Each reader and writer class is associated with a stream, which can be retrieved through the class's BaseStream property.

Toto jsou některé běžně používané třídy čteček a zapisovačů:Here are some commonly used reader and writer classes:

  • BinaryReader a BinaryWriter – pro čtení a zápis primitivních datových typů jako binárních hodnot.BinaryReader and BinaryWriter – for reading and writing primitive data types as binary values.

  • StreamReader a StreamWriter – pro čtení a zápis znaků pomocí kódovací hodnoty pro převod znaků do a z bajtů.StreamReader and StreamWriter – for reading and writing characters by using an encoding value to convert the characters to and from bytes.

  • StringReader a StringWriter – pro čtení a zápis znaků do a z řetězce.StringReader and StringWriter – for reading and writing characters to and from strings.

  • TextReader a TextWriter – slouží jako abstraktní základní třída pro jiné čtečky a zapisovače, které čtou a zapisují znaky a řetězce, ale nikoli binární data.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.

Zobrazit jak: Čtení textu ze souboru, jak: Zápis textu do souboru, jak: Čtení znaků z řetězce, a jak: Zápis znaků do řetězce.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.

Asynchronní vstupně-výstupních operacíAsynchronous I/O operations

Čtení a zápis velkého množství dat může zatěžovat prostředky.Reading or writing a large amount of data can be resource-intensive. Má-li aplikace nadále reagovat na uživatele, je zapotřebí tyto úkoly provádět asynchronně.You should perform these tasks asynchronously if your application needs to remain responsive to the user. Při synchronních vstupně-výstupních operacích je vlákno uživatelského rozhraní zablokováno, dokud není operace náročná na prostředky dokončena.With synchronous I/O operations, the UI thread is blocked until the resource-intensive operation has completed. Použít asynchronní vstupně-výstupní operace při vývoji Windows 8.x Store aplikacím zabránit dojmu, že vaše aplikace přestala fungovat.Use asynchronous I/O operations when developing Windows 8.x Store apps to prevent creating the impression that your app has stopped working.

Asynchronní členy obsahují Async v jejich názvy, například CopyToAsync, FlushAsync, ReadAsync, a WriteAsync metody.The asynchronous members contain Async in their names, such as the CopyToAsync, FlushAsync, ReadAsync, and WriteAsync methods. Používejte tyto metody s async a await klíčová slova.You use these methods with the async and await keywords.

Další informace najdete v tématu asynchronní vstupně-výstupní operace souboru.For more information, see Asynchronous File I/O.

KompreseCompression

Kompresí se rozumí proces zmenšení velikosti ukládaného souboru.Compression refers to the process of reducing the size of a file for storage. Dekomprese je proces extrahování obsahu komprimovaného souboru do použitelného formátu.Decompression is the process of extracting the contents of a compressed file so they are in a usable format. System.IO.Compression Obor názvů obsahuje typy pro kompresi a dekompresi souborů a datových proudů.The System.IO.Compression namespace contains types for compressing and decompressing files and streams.

Následující třídy jsou při kompresi a dekompresi souborů a datových proudů často používány:The following classes are frequently used when compressing and decompressing files and streams:

  • ZipArchive – pro vytváření a získávání záznamů v archívu zip.ZipArchive – for creating and retrieving entries in the zip archive.

  • ZipArchiveEntry – pro reprezentaci komprimovaného souboru.ZipArchiveEntry – for representing a compressed file.

  • ZipFile – pro vytváření, extrahování a otevírání komprimovaného balíku.ZipFile – for creating, extracting, and opening a compressed package.

  • ZipFileExtensions – pro vytváření a extrahování záznamů v komprimovaném balíku.ZipFileExtensions – for creating and extracting entries in a compressed package.

  • DeflateStream – pro kompresi a dekompresi datových proudů algoritmem Deflate.DeflateStream – for compressing and decompressing streams using the Deflate algorithm.

  • GZipStream – pro kompresi a dekompresi datových proudů v datovém formátu gzip.GZipStream – for compressing and decompressing streams in gzip data format.

Zobrazit jak: Komprese a extrahování souborů.See How to: Compress and Extract Files.

Izolované úložištěIsolated storage

Izolované úložiště je mechanismus pro ukládání dat poskytující izolaci a bezpečnost definováním standardizovaných způsobů asociace kódu s uloženými daty.Isolated storage is a data storage mechanism that provides isolation and safety by defining standardized ways of associating code with saved data. Úložiště poskytuje virtuální systém souborů izolovaný uživatelem, sestavením a (volitelně) doménou.The storage provides a virtual file system that is isolated by user, assembly, and (optionally) domain. Izolované úložiště je obzvláště užitečné, nemá-li aplikace oprávnění k přístupu k uživatelským souborům.Isolated storage is particularly useful when your application does not have permission to access user files. Lze tak ukládat nastavení nebo soubory aplikace způsobem řízeným zásadami zabezpečení daného počítače.You can save settings or files for your application in a manner that is controlled by the computer's security policy.

Izolované úložiště není k dispozici pro Windows 8.x Store aplikace; místo toho použít třídy aplikačních dat v Windows.Storage oboru názvů.Isolated storage is not available for Windows 8.x Store apps; instead, use application data classes in the Windows.Storage namespace. Další informace najdete v tématu data aplikací.For more information, see Application data.

Při implementaci izolovaného úložiště jsou běžně používány následující třídy:The following classes are frequently used when implementing isolated storage:

Zobrazit izolované úložiště.See Isolated Storage.

Vstupně-výstupní operace v aplikacích pro Windows StoreI/O operations in Windows Store apps

Aplikace .NET pro Windows 8.x Store.NET for Windows 8.x Store apps Obsahuje celou řadu typů pro čtení a zápis datových proudů, ale tato sada neobsahuje všechny typy rozhraní .NET Framework vstupně-výstupních operací.The Aplikace .NET pro Windows 8.x Store.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.

Některé důležité rozdíly při používání vstupně-výstupních operací v Windows 8.x Store aplikace:Some important differences to note when using I/O operations in Windows 8.x Store apps:

V případě potřeby je možné převádět mezi proudy rozhraní .NET Framework a proudy Windows Runtime.You can convert between .NET Framework streams and Windows Runtime streams, if necessary. Další informace najdete v tématu jak: Převádění mezi streamy rozhraní .NET Framework a datovými proudy Windows Runtime nebo WindowsRuntimeStreamExtensions.For more information, see How to: Convert Between .NET Framework Streams and Windows Runtime Streams or WindowsRuntimeStreamExtensions.

Další informace o vstupně-výstupních operací v Windows 8.x Store aplikace, najdete v článku rychlý start: Čtení a zápis do souborů.For more information about I/O operations in a Windows 8.x Store app, see Quickstart: Reading and writing files.

Vstupně-výstupní operace a zabezpečeníI/O and security

Při použití třídy v System.IO obor názvů, je třeba dodržovat požadavky zabezpečení operačního systému jako je například seznamy řízení přístupu (ACL) pro řízení přístupu k souborům a adresářům.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. Tento požadavek je FileIOPermission požadavky.This requirement is in addition to any FileIOPermission requirements. Seznamy ACL lze spravovat programově.You can manage ACLs programmatically. Další informace najdete v tématu jak: Přidání nebo odebrání položek seznamu řízení přístupu.For more information, see How to: Add or Remove Access Control List Entries.

Výchozí zásady zabezpečení zabraňují internetovým a intranetovým aplikacím v přístupu k souborům na počítači uživatele.Default security policies prevent Internet or intranet applications from accessing files on the user’s computer. Proto při psaní kódu, který bude stažen přes internet nebo intranet, nepoužívejte vstupně-výstupní třídy požadující cestu k fyzickému souboru.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. Místo toho použijte izolované úložiště pro tradiční aplikace rozhraní .NET Framework, nebo použijte data aplikací pro Windows 8.x Store aplikace.Instead, use isolated storage for traditional .NET Framework applications, or use application data for Windows 8.x Store apps.

Kontrola zabezpečení se provádí pouze při konstrukci datového proudu.A security check is performed only when the stream is constructed. Proto neotevírejte datový proud a poté jej nepředávejte méně důvěryhodnému kódu nebo doménám aplikace.Therefore, do not open a stream and then pass it to less-trusted code or application domains.

  • Běžné vstupně-výstupní úlohyCommon I/O Tasks
    Poskytuje seznam vstupně-výstupních úkolů přidružených k souborům, adresářům a datovým proudům a odkazuje pro každý úkol na relevantní obsah a příklady.Provides a list of I/O tasks associated with files, directories, and streams, and links to relevant content and examples for each task.

  • Asynchronní I/O souboryAsynchronous File I/O
    Popisuje výhody výkonu a základní operace asynchronních vstupně-výstupních operací.Describes the performance advantages and basic operation of asynchronous I/O.

  • Izolované úložištěIsolated Storage
    Popisuje mechanismus pro ukládání dat poskytující izolaci a bezpečnost definováním standardizovaných způsobů asociace kódu s uloženými daty.Describes a data storage mechanism that provides isolation and safety by defining standardized ways of associating code with saved data.

  • KanályPipes
    Popisuje operace anonymních a pojmenovaných kanálů v rozhraní .NET Framework.Describes anonymous and named pipe operations in the .NET Framework.

  • Soubory mapované pamětiMemory-Mapped Files
    Popisuje soubory mapované paměti, které obsahují obsah souborů na disku ve virtuální paměti.Describes memory-mapped files, which contain the contents of files on disk in virtual memory. Soubory mapované paměti lze použít k úpravě velmi velkých souborů a k vytváření sdílené paměti pro komunikaci mezi procesy.You can use memory-mapped files to edit very large files and to create shared memory for interprocess communication.