I/O souborů a proudů

Vstupem/výstupem souborů a datových proudů se rozumí přenos dat z úložného média nebo na něj. V .NET obsahují obory názvů typy, System.IO které umožňují čtení a zápis synchronně i asynchronně na datových proudech a souborech. 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ů.

Soubor je uspořádaná a pojmenovaná kolekce bajtů s trvalým úložištěm. Pracujete-li se soubory, pracujete s cestami adresářů, diskovým úložištěm a názvy souborů a adresářů. 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ěť). 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ů.

Soubory a adresáře

Typy v System.IO oboru názvů můžete použít k interakci se soubory a adresáři. 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í.

Zásady vytváření názvů cest a způsoby vyjádření cesty 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, najdete v tématu Formáty cest k souborům v systémech Windows.

Zde jsou některé běžně používané třídy souborů a adresářů:

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

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

  • Directory – poskytuje statické metody pro vytváření, přesouvání a výčet adresářů a podadresářů.

  • DirectoryInfo – poskytuje metody instancí pro vytváření, přesouvání a výčet adresářů a podadresářů.

  • Path – poskytuje metody a vlastnosti pro zpracování řetězců adresáře v různých platformách.

Při volání metod systému souborů byste měli vždy poskytovat robustní zpracování výjimek. Další informace najdete v tématu Zpracování vstupně-výstupních chyb.

Kromě použití těchto tříd mohou uživatelé Visual Basic používat metody a vlastnosti poskytované Microsoft.VisualBasic.FileIO.FileSystem třídou pro vstupně-výstupní operace souboru.

Viz Postupy: Kopírování adresářů, Postupy: Vytvoření výpisu adresáře a postupy: Vytvoření výčtu adresářů a souborů.

Streamy

Abstraktní základní třída Stream podporuje čtení a zápis bajtů. Všechny třídy, které představují streamy dědí z Stream třídy. Třída Stream a jeho odvozené třídy poskytují společný pohled na zdroje dat a úložiště a izolovat programátora od konkrétních podrobností operačního systému a podkladových zařízení.

Datové proudy zahrnují tři základní operace:

  • Čtení – přenos dat z datového proudu do datové struktury, například pole bajtů.

  • Zápis – přenos dat ze zdroje dat do datového proudu.

  • Hledání – dotazování a úprava současné pozice v datovém proudu.

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. Třída například PipeStream nepodporuje hledání. Vlastnost CanRead, CanWritea CanSeek vlastnosti datového proudu určují operace, které datový proud podporuje.

Toto jsou některé běžně používané třídy datového proudu:

  • FileStream – pro čtení a zápis do souboru.

  • IsolatedStorageFileStream – pro čtení a zápis do souboru v izolovaném úložišti.

  • MemoryStream – pro čtení a zápis do paměti jako záložní úložiště.

  • BufferedStream – pro zlepšení výkonu operací čtení a zápisu.

  • NetworkStream – pro čtení a zápis přes síťové sokety.

  • PipeStream – pro čtení a zápis přes anonymní a pojmenované kanály.

  • CryptoStream – pro propojení datových proudů s kryptografickými transformacemi.

Příklad asynchronní práce se streamy naleznete v části Asynchronní vstupně-výstupní operace souboru.

Čtenáři a spisovatelé

Obor System.IO názvů také poskytuje typy pro čtení zakódovaných znaků z datových proudů a jejich zápis do datových proudů. Datové proudy jsou obvykle navrženy pro bajtový vstup a výstup. 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. Každá třída čtenáře a zapisovače je přidružena k datovému proudu, který lze načíst prostřednictvím vlastnosti třídy BaseStream .

Toto jsou některé běžně používané třídy čteček a zapisovačů:

  • BinaryReader a BinaryWriter – pro čtení a zápis primitivních datových typů jako binárních hodnot.

  • StreamReader a StreamWriter – pro čtení a zápis znaků pomocí hodnoty kódování pro převod znaků na bajty a z bajtů.

  • StringReader a StringWriter – pro čtení a zápis znaků do a z řetězců.

  • TextReader a TextWriter – slouží jako abstraktní základní třídy pro ostatní čtenáře a zapisovače, které čtou a zapisují znaky a řetězce, ale ne binární data.

Viz Postupy: Čtení textu ze souboru, Postupy: Zápis textu do souboru, Postupy: Čtení znaků z řetězce a Postupy: Zápis znaků do řetězce.

Asynchronní vstupně-výstupní operace

Čtení a zápis velkého množství dat může zatěžovat prostředky. Má-li aplikace nadále reagovat na uživatele, je zapotřebí tyto úkoly provádět asynchronně. 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. Při vývoji aplikací Windows 8.x Store používejte asynchronní vstupně-výstupní operace, abyste zabránili vytváření dojem, že vaše aplikace přestala fungovat.

Asynchronní členy obsahují Async v jejich názvech, například CopyToAsync, , FlushAsyncReadAsynca WriteAsync metody. Tyto metody použijete s klíčovými slovy a await klíčovými async slovy.

Další informace najdete v tématu Asynchronní vstupně-výstupní operace souboru.

Komprese

Kompresí se rozumí proces zmenšení velikosti ukládaného souboru. Dekomprese je proces extrahování obsahu komprimovaného souboru do použitelného formátu. Obor System.IO.Compression názvů obsahuje typy pro komprimaci a dekompresi souborů a datových proudů.

Následující třídy jsou při kompresi a dekompresi souborů a datových proudů často používány:

  • ZipArchive – pro vytváření a načítání položek v archivu zip.

  • ZipArchiveEntry – pro reprezentaci komprimovaného souboru.

  • ZipFile – pro vytváření, extrahování a otevírání komprimovaného balíčku.

  • ZipFileExtensions – pro vytváření a extrahování položek v komprimovaném balíčku.

  • DeflateStream – pro komprimaci a dekompresi datových proudů pomocí algoritmu Deflate.

  • GZipStream – pro komprimaci a dekompresi datových proudů ve formátu gzip.

Viz Postupy: Komprese a extrahování souborů.

Izolované úložiště

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. Úložiště poskytuje virtuální systém souborů izolovaný uživatelem, sestavením a (volitelně) doménou. 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. Lze tak ukládat nastavení nebo soubory aplikace způsobem řízeným zásadami zabezpečení daného počítače.

Izolované úložiště není dostupné pro aplikace Windows 8.x Store. Místo toho použijte datové třídy aplikací v Windows.Storage oboru názvů. Další informace najdete v tématu Data aplikace.

Při implementaci izolovaného úložiště jsou běžně používány následující třídy:

Viz izolované Storage.

Vstupně-výstupní operace v aplikacích Windows Store

.NET pro aplikace Windows 8.x Store obsahuje mnoho typů pro čtení ze streamů a zápis do datových proudů. Tato sada ale neobsahuje všechny typy vstupně-výstupních operací .NET.

Některé důležité rozdíly při používání vstupně-výstupních operací v aplikacích Windows 8.x Store:

V případě potřeby je možné převádět mezi proudy rozhraní .NET Framework a proudy Windows Runtime. Další informace naleznete v tématu Postupy: Převod mezi .NET Framework Toky a prostředí Windows Runtime Toky nebo 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ů.

Vstupně-výstupní operace a zabezpečení

Pokud používáte třídy v System.IO oboru názvů, musíte postupovat podle požadavků 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. Tento požadavek je navíc k požadavkům FileIOPermission . Seznamy ACL lze spravovat programově. Další informace najdete v tématu Postupy: Přidání nebo odebrání položek seznamu Access Control.

Výchozí zásady zabezpečení brání internetovým nebo intranetovým aplikacím v přístupu k souborům v počítači uživatele. Proto při psaní kódu, který se stáhne přes internet nebo intranet, nepoužívejte třídy vstupně-výstupních operací, které vyžadují cestu k fyzickému souboru. Místo toho použijte izolované úložiště pro aplikace .NET.

Kontrola zabezpečení se provádí pouze při konstrukci datového proudu. Proto neotevírejte datový proud a poté jej nepředávejte méně důvěryhodnému kódu nebo doménám aplikace.

  • Běžné vstupně-výstupní úlohy
    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.

  • Vstupně-výstupní operace asynchronního souboru
    Popisuje výhody výkonu a základní operace asynchronních vstupně-výstupních operací.

  • Izolované 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.

  • Kanály
    Popisuje anonymní a pojmenované operace kanálu v .NET.

  • Soubory mapované na paměť
    Popisuje soubory mapované paměti, které obsahují obsah souborů na disku ve virtuální paměti. 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.