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 .NET Framework System.IO obory názvů obsahují typy, které umožňují čtení a zápis synchronních i asynchronních datových proudů a souborů.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 oboru názvů pro interakci se soubory a adresáři.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.

Pro konvence pojmenovávání cest a způsoby, jak vyjádřit cestu k souborům pro systémy Windows, včetně syntaxe zařízení DOS podporované v .NET Core 1,1 a novějších a .NET Framework 4.6.2 a novějších verzích, najdete v tématu formáty cest 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á vytvořit FileStream objekt.File - provides static methods for creating, copying, deleting, moving, and opening files, and helps create a FileStream object.

  • FileInfo– poskytuje metody instance pro vytváření, kopírování, odstraňování, přesouvání a otevírání souborů a pomáhá vytvořit FileStream objekt.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ýčtu adresářů a podadresářů.Directory - provides static methods for creating, moving, and enumerating through directories and subdirectories.

  • DirectoryInfo– poskytuje metody instance pro vytváření, přesouvání a vytváření výčtu 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áře v rámci způsobu pro různé platformy.Path - provides methods and properties for processing directory strings in a cross-platform manner.

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

Kromě použití těchto tříd mohou uživatelé Visual Basic použít metody a vlastnosti poskytované Microsoft.VisualBasic.FileIO.FileSystem třídou pro vstupně-výstupní operace se soubory.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.

Informace najdete v tématech Postup: kopírování adresářů, Postupy: vytvoření výpisu adresářůa Postup: zobrazení 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. Všechny třídy, které reprezentují datové proudy, dědí z Stream třídy.All classes that represent streams inherit from the Stream class. StreamTřída a její odvozené třídy poskytují běžné zobrazení zdrojů dat a úložišť a izolují programátora od konkrétních podrobností o operačním systému a základních zařízeních.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. Třída například nepodporuje PipeStream hledání.For example, the PipeStream class does not support seeking. CanRead CanWrite CanSeek Vlastnosti datového proudu, a určují operace, které datový proud podporuje.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í úložiště.MemoryStream – for reading and writing to memory as the backing store.

  • BufferedStream– pro zlepšení výkonu operací čtení a zápisu.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ů s kryptografickými transformacemi.CryptoStream – for linking data streams to cryptographic transformations.

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

Čtenáři a zapisovačeReaders and writers

System.IOObor názvů také poskytuje 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 čtecího modulu a zapisovače je přidružena ke streamu, který lze načíst prostřednictvím BaseStream vlastnosti třídy.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:

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

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

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

  • TextReadera TextWriter – slouží jako abstraktní základní třídy pro jiné čtenáře a zapisovače, které čtou a zapisují znaky a řetězce, ale ne 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.

Viz Postupy: čtení textu ze souboru, Postupy: zápis textu do souboru, Postupy: čtení znaků z řetězcea Postupy: 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í operaceAsynchronous 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žijte asynchronní vstupně-výstupní operace při vývoji aplikací pro Windows 8. x Store, abyste zabránili vytváření dojmu o tom, ž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í členové obsahují Async názvy, například CopyToAsync FlushAsync metody,, ReadAsync a WriteAsync .The asynchronous members contain Async in their names, such as the CopyToAsync, FlushAsync, ReadAsync, and WriteAsync methods. Tyto metody můžete použít s async await klíčovými slovy a.You use these methods with the async and await keywords.

Další informace najdete v tématu asynchronní vstupně-výstupní operace se soubory.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.CompressionObor názvů obsahuje typy pro komprimaci 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 načítání položek v archivu 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í, extrakci a otevírání komprimovaného balíčku.ZipFile – for creating, extracting, and opening a compressed package.

  • ZipFileExtensions– pro vytváření a extrahování položek v komprimovaném balíčku.ZipFileExtensions – for creating and extracting entries in a compressed package.

  • DeflateStream– pro komprimaci a dekompresi datových proudů pomocí algoritmu deflate.DeflateStream – for compressing and decompressing streams using the Deflate algorithm.

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

Viz Postup: komprimace a extrakce 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 aplikace Windows 8. x Store. místo toho použijte datové třídy aplikace 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:

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

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

Aplikace pro Store .NET pro Windows 8. x obsahují mnoho typů pro čtení a zápis do datových proudů. Tato sada ale neobsahuje všechny .NET Framework vstupně-výstupních typech.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.

Některé důležité rozdíly při používání vstupně-výstupních operací v aplikacích pro Store ve Windows 8. x: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 naleznete v tématu How to: Convert Between .NET Framework Streams and prostředí Windows Runtime Streams or 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ích v aplikaci Windows 8. x Store najdete v tématu rychlý Start: čtení a zápis souborů.For more information about I/O operations in a Windows 8.x Store app, see Quickstart: Reading and writing files.

I/O a zabezpečeníI/O and security

Pokud používáte třídy v System.IO oboru názvů, musíte dodržovat požadavky na zabezpečení operačního systému, jako jsou seznamy řízení přístupu (ACL), abyste mohli řídit přístup 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 kromě všech FileIOPermission požadavků.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 Postup: Přidání nebo odebrání položek seznamu Access Control.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í .NET Framework aplikace nebo použijte data aplikací pro aplikace Windows 8. x Store.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.

  • I/O asynchronní 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.

  • PojmenovanéPipes
    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.