Sdílet prostřednictvím


Vstupně-výstupní operace souborů a datových proudů

Vstupně-výstupní operace souborů a datových proudů (vstup/výstup) odkazují na přenos dat do nebo z úložného média. V .NET System.IO obory názvů obsahují typy, které umožňují čtení a zápis synchronně i asynchronně u datových proudů a souborů. Tyto obory názvů také obsahují typy, které provádějí kompresi a dekomprimaci souborů, a typy, které umožňují komunikaci prostřednictvím kanálů a sériových portů.

Soubor je seřazená a pojmenovaná kolekce bajtů s trvalým úložištěm. Při práci se soubory pracujete s cestami k adresáři, diskovým úložištěm a názvy souborů a adresářů. Naproti tomu stream je posloupnost bajtů, ze kterých můžete číst a zapisovat do záložního úložiště, což může být jedno z několika úložných médií (například disky nebo paměť). Stejně jako existuje několik úložišť zálohování jiných než disků, existuje několik druhů datových proudů jiných než datových proudů souborů, jako jsou sítě, paměť a datové proudy kanálu.

Soubory a adresáře

Typy v System.IO oboru názvů můžete použít k interakci se soubory a adresáři. Můžete například získat a nastavit vlastnosti pro soubory a adresáře a načíst kolekce souborů a adresářů na základě kritérií hledá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ématech Formáty cest k souborům v systémech Windows.

Tady 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 napříč platformami.

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

Kromě použití těchto tříd mohou uživatelé jazyka 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í datové proudy 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í.

Streamy zahrnují tři základní operace:

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

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

  • Hledání – dotazování a úprava aktuální pozice v rámci datového proudu.

V závislosti na podkladovém zdroji nebo úložišti dat může datový proud podporovat pouze některé z těchto funkcí. Třída například PipeStream nepodporuje vyhledávání. CanRead, CanWritea CanSeek vlastnosti datového proudu určují operace, které datový proud podporuje.

Tady jsou některé běžně používané třídy datových proudů:

  • 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 dat přes anonymní a pojmenované roury.

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

Příklad asynchronní práce s datovými proudy najdete v tématu Asynchronní vstupně-výstupní operace souboru.

Čtenáři a spisovatelé

Obor System.IO názvů také poskytuje typy pro čtení kódovaných znaků z datových proudů a jejich zápis do datových proudů. Datové proudy jsou obvykle navržené pro bajtové vstupy a výstupy. Typy čtečky a zapisovače zajišťují převod kódovaných znaků do bajtů a z bajtů tak, aby datový proud mohl operaci dokončit. Každá třída čtenáře a zapisovače je přidružena ke streamu, který lze načíst prostřednictvím vlastnosti třídy BaseStream .

Tady jsou některé běžně používané třídy pro čtení a zápis:

  • 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í kódovací hodnoty 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í nebo zápis velkého množství dat může být náročné na prostředky. Tyto úlohy byste měli provádět asynchronně, pokud vaše aplikace potřebuje reagovat na uživatele. Při synchronních vstupně-výstupních operacích se vlákno uživatelského rozhraní zablokuje, dokud se operace náročná na prostředky nedokončí. Při vývoji aplikací pro Windows 8.x Store používejte asynchronní vstupně-výstupní operace, abyste zabránili vytvoření dojem, že aplikace přestala fungovat.

Asynchronní členy obsahují Async ve svých názvech, například CopyToAsync, FlushAsync, ReadAsync a WriteAsync metody. Tyto metody použijete s klíčovými slovy async a await.

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

Komprese

Komprese odkazuje na proces zmenšení velikosti souboru pro úložiště. Dekomprese je proces extrahování obsahu komprimovaného souboru tak, aby byly v použitelném formátu. Obor System.IO.Compression názvů obsahuje typy pro komprimaci a dekompresi souborů a datových proudů.

Při komprimaci a dekompresi souborů a datových proudů se často používají následující třídy:

  • 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 úložiště dat, který poskytuje izolaci a bezpečnost definováním standardizovaných způsobů přidružení kódu k uloženým datům. Úložiště poskytuje virtuální systém souborů, který je izolovaný uživatelem, sestavením a (volitelně) doménou. Izolované úložiště je zvlášť užitečné, když vaše aplikace nemá oprávnění pro přístup k uživatelským souborům. Nastavení nebo soubory pro aplikaci můžete uložit způsobem, který řídí zásady zabezpečení počítače.

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

Při implementaci izolovaného úložiště se často používají následující třídy:

Viz Izolované úložiště.

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

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

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

V případě potřeby můžete převést mezi datovými proudy rozhraní .NET Framework a datovými proudy prostředí Windows Runtime. Další informace naleznete v tématu Postupy: Převod mezi datovými proudy rozhraní .NET Framework a streamy prostředí Windows Runtime nebo WindowsRuntimeStreamExtensions.

Další informace o vstupně-výstupních operacích v aplikaci pro 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 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. Tento požadavek je doplňkový k jakýmkoli FileIOPermission požadavkům. Seznamy ACL můžete spravovat prostřednictvím kódu programu. Další informace naleznete v tématu Postupy: Přidání nebo odebrání položek seznamu řízení přístupu.

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 vytváření datového proudu. Proto neotevřete datový proud a pak ho předejte 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 odkazy na relevantní obsah a příklady pro každý úkol.

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

  • Izolované úložiště
    Popisuje mechanismus úložiště dat, který poskytuje izolaci a bezpečnost definováním standardizovaných způsobů přidružení kódu k uloženým datům.

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

  • souboryMemory-Mapped
    Popisuje soubory mapované do paměti, které obsahují obsah souborů na disku ve virtuální paměti. Soubory mapované do paměti můžete použít k úpravě velmi velkých souborů a k vytvoření sdílené paměti pro komunikaci mezi procesy.