Základní vstupně-výstupní operace se soubory
Základní abstraktní třída Stream podporuje čtení a zápis bajtů. Stream integruje asynchronní podporu. Jeho výchozí implementace definují synchronní čtení a zápisy z hlediska jejich odpovídajících asynchronních metod a naopak.
Všechny třídy, které představují datové proudy, dědí ze třídy Stream. Třída Stream a její odvozené třídy, poskytují obecné zobrazení datových zdrojů a úložišť, izolující programátora od konkrétních podrobností operačního systému a základního zařízení.
Datové proudy zahrnují tyto základní operace:
Z datových proudů lze číst. Čtení je přenos dat z datového proudu do datové struktury, jako například pole bajtů.
Do datových proudů lze zapisovat. Zápis je přenos dat ze zdroje dat do datového proudu.
Datové proudy mohou podporovat vyhledávání. Hledání je dotazování a úprava současné pozice v datovém proudu.
Datové proudy mohou podporovat pouze některé z těchto možností v závislosti na odpovídajícím zdroji dat, nebo úložišti. Například NetworkStreams nepodporuje hledání. Vlastnosti CanRead, CanWrite a CanSeek od Stream a jeho odvozených tříd určují operace, které podporují různé datové proudy.
Seznam běžných vstupně-výstupních úloh naleznete v tématu Běžné vstupně výstupní úlohy.
![]() |
---|
Visual Basic uživatelé se mohou rozhodnout používat metody a vlastnosti poskytované Microsoft.VisualBasic.FileIO.FileSystem třídy souboru v/V. |
Třídy používané pro vstupně-výstupní operace souboru
Directory obsahuje statické metody pro vytvoření, přesunutí a výčet prostřednictvím adresářů a podadresářů. Třída DirectoryInfo poskytuje instanční metody.
DirectoryInfo obsahuje instanční metody pro vytvoření, přesunutí a výčet prostřednictvím adresářů a podadresářů. Třída Directory poskytuje statické metody.
DriveInfo poskytuje instanční metody pro přístup k informacím o jednotce.
File obsahuje statické metody pro vytváření, kopírování, odstranění, přesunutí a otevírání souborů a pomáhá při vytvoření FileStream. Třída FileInfo poskytuje instanční metody.
FileInfo obsahuje instanční metody pro vytváření, kopírování, odstranění, přesunutí a otevírání souborů, a pomáhá při vytvoření FileStream. Třída File poskytuje statické metody.
FileStream podporuje náhodný přístup k souborům pomocí své metody Seek. FileStream otevře soubory synchronně podle výchozího nastavení a podporuje také asynchronní operace. File obsahuje statické metody a FileInfo obsahuje instanční metody.
FileSystemInfo je abstraktní základní třída pro FileInfo a DirectoryInfo.
Path poskytuje metody a vlastnosti pro zpracování řetězců adresářů nezávisle na platformě.
DeflateStream poskytuje metody a vlastnosti pro kompresi a dekompresi datových proudů pomocí algoritmu Deflate.
GZipStream poskytuje metody a vlastnosti pro kompresi a dekompresi datových proudů. Ve výchozím nastavení používá tato třída stejný algoritmus jako třída DeflateStream, ale může být rozšířena tak, aby použila jiné formáty komprese.
SerialPort poskytuje metody a vlastnosti pro řízení souboru prostředků sériového portu.
File, FileInfo, DriveInfo, Path, Directory a DirectoryInfo jsou uzavřené třídy (v jazyce Microsoft Visual Basic, NotInheritable). Můžete vytvořit nové instance těchto tříd, ale nemohou mít odvozené třídy.
Třídy používané pro čtení a zápis do datových proudů
BinaryReader a BinaryWriter čtou a zapisují kódované řetězce a primitivní datové typy z a do Streams.
StreamReader přečte znaky z Streams, s použitím Encoding pro převedení znaků na a z bajtů. StreamReader má konstruktor, který se pokouší zjistit, jaké je správné Encoding pro daný Stream, na základě přítomnosti specifické preamble pro dané Encoding, jako je například značka pořadí bajtů.
StreamWriter zapíše znaky do Streams a používá Encoding pro převedení znaků na bajty.
StringReader přečte znaky z Strings. StringReader vám umožní zacházet s Strings se stejným rozhraním API, takže výstup může být buď Stream v jakémkoli kódování, nebo String.
StringWriter zapíše znaky do Strings. StringWriter vám umožní zacházet s Strings se stejným rozhraním API, takže výstup může být buď Stream v jakémkoli kódování, nebo String.
TextReader je abstraktní základní třída pro StreamReader a StringReader. Během implementace abstraktního Stream, jsou třídy navrženy pro vstup a výstup bajtů, implementace TextReader jsou navrženy pro výstup znaků Unicode.
TextWriter je abstraktní základní třída pro StreamWriter a StringWriter. Během implementace abstraktního Stream, jsou třídy navrženy pro vstup a výstup bajtů, implementace TextWriter jsou navrženy pro vstup znaků Unicode.
Běžné třídy vstupně-výstupních operací pro datové proudy
BufferedStream je Stream, který přidá ukládání do vyrovnávací paměti do jiného Stream jako například NetworkStream. (FileStream již interně, ukládání a proudu MemoryStream vyrovnávací paměti nepotřebuje.) BufferedStream se může používat u některých typů datových proudů s cílem zlepšit výkon čtení a zápisu. Vyrovnávací paměť je blok bajtů v paměti používaný pro zápis dat do mezipaměti, a tím snižuje počet volání operačního systému.
CryptoStream propojí datové proudy s kryptografickými transformacemi. Přestože CryptoStream je odvozen ze Stream, není součástí oboru názvů System.IO, ale je v oboru názvů System.Security.Cryptography.
MemoryStream je datový proud, který provádí operace bez vyrovnávací paměti, jehož zapouzdřená data jsou přímo přístupná v paměti. Tento datový proud nemá žádné záložní úložiště a může být užitečný jako dočasná vyrovnávací paměť.
NetworkStream představuje Stream prostřednictvím síťového připojení. Přestože NetworkStream je odvozen z Stream, není součástí oboru názvů System.IO, ale je v oboru názvů System.Net.Sockets.
Vstupně-výstupní operace a zabezpečení
Při použití třídy v oboru názvů System.IO, požadavky zabezpečení operačního systému, jako například seznamy řízení přístupu (ACL), musí být splněny pro povolení přístupu. Tento požadavek je možné přidat k jakýmkoli FileIOPermission požadavkům.
![]() |
---|
Seznamy ACL lze programově spravovat.Další informace naleznete v tématu Postupy: Přidání nebo odebrání položek seznamu řízení přístupu a Přehled technologie ACL. |
![]() |
---|
Výchozí zásady zabezpečení pro Internet a intranet nepovolují přístup k souborům.Proto nepoužívejte běžné vstupně-výstupní třídy neizolovaného úložiště, pokud píšete kód, který bude stažen z Internetu.Namísto toho používejte Izolované úložiště. |
![]() |
---|
Při otevření souboru nebo síťového datového proudu se kontrola zabezpečení provede pouze v případě, že je vytvářen datový proud.Proto je třeba být opatrný při předávání těchto datových proudů méně důvěryhodnému kódu, nebo doménám aplikace. |
Viz také
Úkoly
Postupy: Vytvořit výpis adresáře
Postupy: Čtení a zápis do nově vytvořeného datového souboru
Postupy: Otevření a přidávání do souboru s výpisem
Postupy: Čtení textu ze souboru
Postupy: Zapsat text do souboru
Postupy: Zapsat znaky do řetězce