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

Můžete použít typy v System.IO oboru názvů pro 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í.

Pro konvence pojmenová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 verzích a .NET Framework 4.6.2 a novějších verzí, najdete v tématu formáty cest souborů 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á vytvořit 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 vytváření výčtu adresářů a podadresářů.

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

  • Path – poskytuje metody a vlastnosti pro zpracování řetězců adresáře v rámci způsobu pro různé platformy.

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žít metody a vlastnosti poskytované Microsoft.VisualBasic.FileIO.FileSystem třídou pro vstupně-výstupní operace se soubory.

Informace najdete v tématech Postup: kopírování adresářů, Postupy: vytvoření výpisu adresářůa Postup: zobrazení výčtu adresářů a souborů.

Streamy

Abstraktní základní třída Stream podporuje čtení a zápis bajtů. Všechny třídy, které reprezentují datové proudy, dědí z Stream třídy. 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.

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 nepodporuje PipeStream hledání. CanRead CanWrite CanSeek Vlastnosti datového proudu, a 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 práce s datovými proudy lze asynchronně zobrazit v tématu asynchronní vstupně-výstupní operace se soubory.

Čtenáři a zapisovače

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

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.

  • 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 jiné č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ězcea 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. 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.

Asynchronní členové obsahují Async názvy, například CopyToAsync FlushAsync metody,, ReadAsync a WriteAsync . Tyto metody můžete použít s async await klíčovými slovy a.

Další informace najdete v tématu asynchronní vstupně-výstupní operace se soubory.

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. System.IO.CompressionObor 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í, extrakci 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ů v datovém formátu gzip.

Viz Postup: komprimace a extrakce 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í k dispozici pro aplikace 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 aplikací.

Při implementaci izolovaného úložiště jsou běžně používány 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 ze Storu obsahují mnoho typů pro čtení 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 pro Store ve Windows 8. x:

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 How to: Convert Between .NET Framework Streams and prostředí 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ů.

I/O 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 kromě všech FileIOPermission požadavků. Seznamy ACL lze spravovat programově. Další informace najdete v tématu Postup: Přidání nebo odebrání položek seznamu Access Control.

Výchozí zásady zabezpečení zabraňují internetovým nebo intranetovým aplikacím v přístupu k souborům v počítači uživatele. Proto nepoužívejte třídy I/O, které při psaní kódu, který bude stažen prostřednictvím Internetu nebo intranetu, vyžadovat 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.

  • I/O asynchronní soubory
    Popisuje výhody výkonu a základní operace asynchronních vstupně-výstupních operací.

  • Izolované úložiště
    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.

  • Pojmenované
    Popisuje operace anonymního a pojmenovaného kanálu v rozhraní .NET.

  • Soubory mapované paměti
    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.