Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.
FileStream Pomocí třídy můžete číst, zapisovat do, otevírat a zavírat soubory v systému souborů a manipulovat s jinými popisovači operačního systému, včetně kanálů, standardního vstupu a standardního výstupu. K provádění synchronních operací můžete použít metody Read, Write, CopyTo a Flush nebo pro asynchronní operace metody ReadAsync, WriteAsync, CopyToAsync a FlushAsync. Asynchronní metody slouží k provádění operací souborů náročných na prostředky bez blokování hlavního vlákna. Tento faktor výkonu je zvlášť důležitý v aplikaci pro Windows 8.x Store nebo desktopové aplikaci, kde časově náročná operace streamu může blokovat vlákno uživatelského rozhraní a zobrazit aplikaci, jako by nefungovala. FileStream vyrovnává vstup a výstup pro lepší výkon.
Důležité
Tento typ implementuje rozhraní IDisposable. Jakmile skončíte s používáním typu, měli byste ho odstranit buď přímo, nebo nepřímo. Chcete-li typ odstranit přímo, zavolejte jeho Dispose metodu v bloku try/catch. Pokud ho chcete zlikvidovat nepřímo, použijte konstruktor jazyka, jako je using (v jazyce C#) nebo Using (v jazyce Visual Basic). Další informace naleznete v části Použití objektu, který implementuje IDisposable v IDisposable tématu rozhraní.
Vlastnost IsAsync rozeznává, zda byl popisovač souboru otevřen asynchronně. Tuto hodnotu zadáte při vytvoření instance FileStream třídy pomocí konstruktoru, který má isAsync, useAsyncnebo options parametr. Pokud je truetato vlastnost , stream využívá překrývající se vstupně-výstupní operace k asynchronnímu provádění operací se soubory. Vlastnost IsAsync však nemusí být true pro volání metody ReadAsync, WriteAsync nebo CopyToAsync. Pokud je vlastnost IsAsyncfalse a vy voláte asynchronní operace čtení a zápisu, vlákno uživatelského rozhraní není blokováno, ale skutečná vstupně-výstupní operace se provádí synchronně.
Metoda Seek podporuje náhodný přístup k souborům. Seek umožňuje přesunutí pozice pro čtení a zápis do libovolné pozice v souboru. To se provádí pomocí parametrů referenčního bodu posunu bajtů. Posun bajtů je relativní vzhledem k referenčnímu bodu hledání, což může být začátek, aktuální pozice nebo konec podkladového souboru, jak znázorňují tři členové výčtu SeekOrigin .
Poznámka:
Diskové soubory vždy podporují náhodný přístup. Během konstrukce je hodnota vlastnosti CanSeek nastavena na true nebo false v závislosti na základním typu souboru. Pokud je základní typ souboru FILE_TYPE_DISK, jak je definováno v winbase.h, CanSeek hodnota vlastnosti je true. V opačném případě je hodnota vlastnosti CanSeekfalse.
Pokud se proces ukončí částí souboru uzamčeného nebo zavře soubor, který má nevyřízené zámky, chování není definováno.
Informace o operacích adresářů a dalších operacích se soubory naleznete v tématu File, Directorya Path třídy. Třída File je utility třída, která má statické metody primárně pro vytváření FileStream objektů na základě cest k souborům. Třída MemoryStream vytvoří datový proud z bajtového pole a je podobný FileStream třídě.
Seznam běžných operací se soubory a adresáři najdete v tématu Běžné vstupně-výstupní úlohy.
Detekce změn pozice proudu
FileStream Pokud objekt nemá výhradní držení popisovače, může jiné vlákno přistupovat k popisovači souboru souběžně a změnit pozici ukazatele souboru operačního systému, který je přidružený k tomuto popisovači souboru. V tomto případě může být ohrožena uložená pozice v objektu FileStream a uložená data ve vyrovnávací paměti. Objekt FileStream rutinně provádí kontroly metod, které přistupují do vyrovnávací paměti, aby se zajistilo, že pozice ukazatele operačního systému je stejná jako pozice uložená v mezipaměti používaná objektem FileStream.
Pokud je v volání metody Read zjištěna neočekávaná změna pozice popisovače, .NET zahodí obsah vyrovnávací paměti a znovu přečte proud ze souboru. To může mít vliv na výkon v závislosti na velikosti souboru a všech dalších procesech, které by mohly ovlivnit umístění datového proudu souborů.
Pokud je v volání metody zjištěna neočekávaná změna pozice popisovače Write , obsah vyrovnávací paměti se zahodí a IOException vyvolá se výjimka.
Objekt FileStream nebude mít výhradní blokování na svém popisovači, pokud je přístupná vlastnost SafeFileHandle k zveřejnění popisovače nebo když objektu FileStream je ve svém konstruktoru udělena vlastnost SafeFileHandle.