FileStream Třída

Definice

Stream Poskytuje soubor, který podporuje synchronní i asynchronní operace čtení a zápisu.

public ref class FileStream : System::IO::Stream
public class FileStream : System.IO.Stream
[System.Runtime.InteropServices.ComVisible(true)]
public class FileStream : System.IO.Stream
type FileStream = class
    inherit Stream
[<System.Runtime.InteropServices.ComVisible(true)>]
type FileStream = class
    inherit Stream
Public Class FileStream
Inherits Stream
Dědičnost
FileStream
Dědičnost
Odvozené
Atributy

Příklady

Následující příklad ukazuje některé konstruktory FileStream .

using System;
using System.IO;
using System.Text;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Delete the file if it exists.
        if (File.Exists(path))
        {
            File.Delete(path);
        }

        //Create the file.
        using (FileStream fs = File.Create(path))
        {
            AddText(fs, "This is some text");
            AddText(fs, "This is some more text,");
            AddText(fs, "\r\nand this is on a new line");
            AddText(fs, "\r\n\r\nThe following is a subset of characters:\r\n");

            for (int i=1;i < 120;i++)
            {
                AddText(fs, Convert.ToChar(i).ToString());
            }
        }

        //Open the stream and read it back.
        using (FileStream fs = File.OpenRead(path))
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);
            int readLen;
            while ((readLen = fs.Read(b,0,b.Length)) > 0)
            {
                Console.WriteLine(temp.GetString(b,0,readLen));
            }
        }
    }

    private static void AddText(FileStream fs, string value)
    {
        byte[] info = new UTF8Encoding(true).GetBytes(value);
        fs.Write(info, 0, info.Length);
    }
}
open System
open System.IO
open System.Text

let addText (fs:FileStream) (value: string) =
    let info = UTF8Encoding(true).GetBytes value
    fs.Write(info, 0, info.Length);

let path = @"c:\temp\MyTest.txt"

// Delete the file if it exists.
if File.Exists path then
    File.Delete path

//Create the file.
do
    use fs = File.Create path

    addText fs "This is some text"
    addText fs "This is some more text,"
    addText fs "\r\nand this is on a new line"
    addText fs "\r\n\r\nThe following is a subset of characters:\r\n"

    for i = 1 to 119 do
        Convert.ToChar i
        |> string
        |> addText fs
    
do
    //Open the stream and read it back.
    use fs = File.OpenRead path
    let b = Array.zeroCreate 1024
    let temp = UTF8Encoding true
    let mutable readLen = fs.Read(b,0,b.Length);
    while readLen> 0 do
        printfn $"{temp.GetString(b,0,readLen)}"
        readLen <- fs.Read(b,0,b.Length)
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        ' Delete the file if it exists.
        If File.Exists(path) Then
            File.Delete(path)
        End If

        'Create the file.
        Dim fs As FileStream = File.Create(path)

        AddText(fs, "This is some text")
        AddText(fs, "This is some more text,")
        AddText(fs, Environment.NewLine & "and this is on a new line")
        AddText(fs, Environment.NewLine & Environment.NewLine)
        AddText(fs, "The following is a subset of characters:" & Environment.NewLine)

        Dim i As Integer

        For i = 1 To 120
            AddText(fs, Convert.ToChar(i).ToString())

        Next

        fs.Close()

        'Open the stream and read it back.
        fs = File.OpenRead(path)
        Dim b(1023) As Byte
        Dim temp As UTF8Encoding = New UTF8Encoding(True)

        Do While fs.Read(b, 0, b.Length) > 0
            Console.WriteLine(temp.GetString(b))
        Loop

        fs.Close()
    End Sub

    Private Shared Sub AddText(ByVal fs As FileStream, ByVal value As String)
        Dim info As Byte() = New UTF8Encoding(True).GetBytes(value)
        fs.Write(info, 0, info.Length)
    End Sub
End Class

Následující příklad ukazuje, jak zapisovat do souboru asynchronně. Tento kód běží v aplikaci WPF (Windows Presentation Foundation) s názvem TextBlock s názvem UserInput a tlačítkem, který je připojen k obslužné rutině události Click s názvem Button_Click. Cesta k souboru musí být změněna na soubor, který existuje v počítači.

using System;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.IO;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            UnicodeEncoding uniencoding = new UnicodeEncoding();
            string filename = @"c:\Users\exampleuser\Documents\userinputlog.txt";

            byte[] result = uniencoding.GetBytes(UserInput.Text);

            using (FileStream SourceStream = File.Open(filename, FileMode.OpenOrCreate))
            {
                SourceStream.Seek(0, SeekOrigin.End);
                await SourceStream.WriteAsync(result, 0, result.Length);
            }
        }
    }
}
Imports System.IO
Imports System.Text

Class MainWindow
    Private Async Sub Button_Click(sender As Object, e As RoutedEventArgs)
        Dim uniencoding As UnicodeEncoding = New UnicodeEncoding()
        Dim filename As String = "c:\Users\exampleuser\Documents\userinputlog.txt"

        Dim result As Byte() = uniencoding.GetBytes(UserInput.Text)

        Using SourceStream As FileStream = File.Open(filename, FileMode.OpenOrCreate)
            SourceStream.Seek(0, SeekOrigin.End)
            Await SourceStream.WriteAsync(result, 0, result.Length)
        End Using
    End Sub
End Class

Poznámky

Další informace o tomto rozhraní API naleznete v tématu Doplňkové poznámky k rozhraní API pro FileStream.

Konstruktory

Name Description
FileStream(IntPtr, FileAccess, Boolean, Int32, Boolean)
Zastaralé.
Zastaralé.

Inicializuje novou instanci FileStream třídy pro zadaný popisovač souboru se zadaným oprávněním ke čtení a zápisu, FileStream vlastnictví instance, velikost vyrovnávací paměti a synchronní nebo asynchronní stav.

FileStream(IntPtr, FileAccess, Boolean, Int32)
Zastaralé.
Zastaralé.

Inicializuje novou instanci FileStream třídy pro zadaný popisovač souboru se zadaným oprávněním ke čtení a zápisu, FileStream vlastnictví instance a velikost vyrovnávací paměti.

FileStream(IntPtr, FileAccess, Boolean)
Zastaralé.
Zastaralé.

Inicializuje novou instanci FileStream třídy pro zadaný popisovač souboru se zadaným oprávněním ke čtení/zápisu a FileStream vlastnictví instance.

FileStream(IntPtr, FileAccess)
Zastaralé.
Zastaralé.

Inicializuje novou instanci FileStream třídy pro zadaný popisovač souboru se zadaným oprávněním ke čtení a zápisu.

FileStream(SafeFileHandle, FileAccess, Int32, Boolean)

Inicializuje novou instanci FileStream třídy pro zadaný popisovač souboru se zadaným oprávněním ke čtení/zápisu, velikost vyrovnávací paměti a synchronním nebo asynchronním stavem.

FileStream(SafeFileHandle, FileAccess, Int32)

Inicializuje novou instanci FileStream třídy pro zadaný popisovač souboru se zadaným oprávněním ke čtení a zápisu a velikost vyrovnávací paměti.

FileStream(SafeFileHandle, FileAccess)

Inicializuje novou instanci FileStream třídy pro zadaný popisovač souboru se zadaným oprávněním ke čtení a zápisu.

FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean)

Inicializuje novou instanci FileStream třídy se zadanou cestou, režimem vytvoření, oprávněním ke čtení/zápisu a sdílení, velikost vyrovnávací paměti a synchronním nebo asynchronním stavem.

FileStream(String, FileMode, FileAccess, FileShare, Int32, FileOptions)

Inicializuje novou instanci FileStream třídy se zadanou cestou, režimem vytvoření, oprávněním ke čtení a zápisu a sdílení, přístup k ostatním FileStreams může mít stejný soubor, velikost vyrovnávací paměti a další možnosti souboru.

FileStream(String, FileMode, FileAccess, FileShare, Int32)

Inicializuje novou instanci FileStream třídy se zadanou cestou, režimem vytvoření, oprávněním ke čtení/zápisu a sdílení a velikostí vyrovnávací paměti.

FileStream(String, FileMode, FileAccess, FileShare)

Inicializuje novou instanci FileStream třídy se zadanou cestou, režimem vytvoření, oprávněním ke čtení a zápisu a oprávněním ke sdílení.

FileStream(String, FileMode, FileAccess)

Inicializuje novou instanci FileStream třídy se zadanou cestou, režimem vytvoření a oprávněním ke čtení a zápisu.

FileStream(String, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity)

Inicializuje novou instanci FileStream třídy se zadanou cestou, režimem vytvoření, přístupovými právy a oprávněním ke sdílení, velikost vyrovnávací paměti, dalšími možnostmi souboru, řízením přístupu a zabezpečením auditu.

FileStream(String, FileMode, FileSystemRights, FileShare, Int32, FileOptions)

Inicializuje novou instanci FileStream třídy se zadanou cestou, režimem vytvoření, přístupovými právy a oprávněním ke sdílení, velikost vyrovnávací paměti a dalšími možnostmi souboru.

FileStream(String, FileMode)

Inicializuje novou instanci FileStream třídy se zadanou cestou a režimem vytvoření.

Vlastnosti

Name Description
CanRead

Získá hodnotu, která označuje, zda aktuální datový proud podporuje čtení.

CanSeek

Získá hodnotu, která označuje, zda aktuální datový proud podporuje hledání.

CanTimeout

Získá hodnotu, která určuje, zda aktuální datový proud může vypršení časového limitu.

(Zděděno od Stream)
CanWrite

Získá hodnotu, která označuje, zda aktuální datový proud podporuje zápis.

Handle
Zastaralé.
Zastaralé.

Získá popisovač souboru operačního systému pro soubor, který aktuální FileStream objekt zapouzdřuje.

IsAsync

Získá hodnotu, která označuje, zda FileStream byl otevřen asynchronně nebo synchronně.

Length

Získá délku v bajtech datového proudu.

Name

Získá absolutní cestu k souboru otevřeného v souboru FileStream.

Position

Získá nebo nastaví aktuální pozici tohoto datového proudu.

ReadTimeout

Získá nebo nastaví hodnotu v milisekundách, která určuje, jak dlouho se datový proud pokusí přečíst před uplynutím časového limitu.

(Zděděno od Stream)
SafeFileHandle

SafeFileHandle Získá objekt, který představuje popisovač souboru operačního systému pro soubor, který aktuální FileStream objekt zapouzdřuje.

WriteTimeout

Získá nebo nastaví hodnotu v milisekundách, která určuje, jak dlouho se datový proud pokusí zapsat před uplynutím časového limitu.

(Zděděno od Stream)

Metody

Name Description
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Zahájí asynchronní operaci čtení. Místo toho zvažte použití ReadAsync(Byte[], Int32, Int32, CancellationToken) .

BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Zahájí asynchronní operaci zápisu. Místo toho zvažte použití WriteAsync(Byte[], Int32, Int32, CancellationToken) .

Close()

Zavře aktuální datový proud a uvolní všechny prostředky (například sokety a popisovače souborů) přidružené k aktuálnímu datovému proudu.

Close()

Zavře aktuální datový proud a uvolní všechny prostředky (například sokety a popisovače souborů) přidružené k aktuálnímu datovému proudu. Místo volání této metody se ujistěte, že je datový proud správně uvolněn.

(Zděděno od Stream)
CopyTo(Stream, Int32)

Načte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti. Obě pozice datových proudů jsou rozšířeny počtem bajtů zkopírovaných.

(Zděděno od Stream)
CopyTo(Stream)

Přečte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu. Obě pozice datových proudů jsou rozšířeny počtem bajtů zkopírovaných.

(Zděděno od Stream)
CopyToAsync(Stream, CancellationToken)

Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadaného tokenu zrušení. Obě pozice datových proudů jsou rozšířeny počtem bajtů zkopírovaných.

(Zděděno od Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Asynchronně čte bajty z aktuálního datového proudu souboru a zapisuje je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti a tokenu zrušení.

CopyToAsync(Stream, Int32, CancellationToken)

Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti a tokenu zrušení. Obě pozice datových proudů jsou rozšířeny počtem bajtů zkopírovaných.

(Zděděno od Stream)
CopyToAsync(Stream, Int32)

Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti. Obě pozice datových proudů jsou rozšířeny počtem bajtů zkopírovaných.

(Zděděno od Stream)
CopyToAsync(Stream)

Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu. Obě pozice datových proudů jsou rozšířeny počtem bajtů zkopírovaných.

(Zděděno od Stream)
CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy serveru sloužícího ke komunikaci se vzdáleným objektem.

(Zděděno od MarshalByRefObject)
CreateWaitHandle()
Zastaralé.

WaitHandle Přidělí objekt.

(Zděděno od Stream)
Dispose()

Uvolní všechny prostředky používané nástrojem Stream.

(Zděděno od Stream)
Dispose(Boolean)

Uvolní nespravované prostředky používané FileStream a volitelně uvolní spravované prostředky.

DisposeAsync()

Asynchronně uvolní nespravované prostředky používané FileStreamnástrojem .

EndRead(IAsyncResult)

Čeká na dokončení čekající asynchronní operace čtení. (Místo toho zvažte použití ReadAsync(Byte[], Int32, Int32, CancellationToken) .)

EndWrite(IAsyncResult)

Ukončí asynchronní operaci zápisu a bloky, dokud nebude operace vstupně-výstupní operace dokončena. (Místo toho zvažte použití WriteAsync(Byte[], Int32, Int32, CancellationToken) .)

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
Finalize()

Zajišťuje, že prostředky jsou uvolněny a další operace čištění se provádějí, když uvolňování paměti uvolní FileStream.

Flush()

Vymaže vyrovnávací paměti pro tento datový proud a způsobí zápis všech uložených dat do vyrovnávací paměti do souboru.

Flush(Boolean)

Vymaže vyrovnávací paměti pro tento datový proud a způsobí zápis všech uložených dat do souboru a také vymaže všechny zprostředkující vyrovnávací paměti souboru.

FlushAsync()

Asynchronně vymaže všechny vyrovnávací paměti pro tento datový proud a způsobí zápis všech dat uložených do vyrovnávací paměti do podkladového zařízení.

(Zděděno od Stream)
FlushAsync(CancellationToken)

Asynchronně vymaže všechny vyrovnávací paměti pro tento datový proud, způsobí zápis všech dat uložených do vyrovnávací paměti do souboru a monitoruje žádosti o zrušení.

GetAccessControl()

FileSecurity Získá objekt, který zapouzdřuje položky seznamu řízení přístupu (ACL) pro soubor popsaný aktuálním FileStream objektem.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetLifetimeService()

Načte objekt služby aktuální životnosti, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
InitializeLifetimeService()

Získá objekt služby životnosti pro řízení zásad životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
Lock(Int64, Int64)

Zabraňuje jiným procesům v čtení nebo zápisu do objektu FileStream.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
MemberwiseClone(Boolean)

Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu.

(Zděděno od MarshalByRefObject)
ObjectInvariant()
Zastaralé.

Poskytuje podporu pro .Contract

(Zděděno od Stream)
Read(Byte[], Int32, Int32)

Načte blok bajtů z datového proudu a zapíše data do dané vyrovnávací paměti.

Read(Span<Byte>)

Přečte posloupnost bajtů z aktuálního datového proudu souboru a posune pozici v datovém proudu souboru o počet přečtených bajtů.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronně čte posloupnost bajtů z aktuálního datového proudu souboru a zapisuje je do bajtového pole začínajícího na zadaném posunu, posune pozici v datovém proudu souboru o počet přečtených bajtů a monitoruje žádosti o zrušení.

ReadAsync(Byte[], Int32, Int32)

Asynchronně čte posloupnost bajtů z aktuálního datového proudu a posune pozici v datovém proudu o počet přečtených bajtů.

(Zděděno od Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Asynchronně čte posloupnost bajtů z aktuálního datového proudu souboru a zapisuje je do oblasti paměti, posune pozici v datovém proudu souboru o počet přečtených bajtů a monitoruje žádosti o zrušení.

ReadByte()

Přečte bajt ze souboru a posune pozici čtení o jeden bajt.

Seek(Int64, SeekOrigin)

Nastaví aktuální pozici tohoto datového proudu na danou hodnotu.

SetAccessControl(FileSecurity)

Použije položky seznamu řízení přístupu (ACL) popsané objektem FileSecurity na soubor popsaný aktuálním FileStream objektem.

SetLength(Int64)

Nastaví délku tohoto datového proudu na danou hodnotu.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
Unlock(Int64, Int64)

Umožňuje přístup jiným procesům ke všem nebo částem souboru, který byl dříve uzamčen.

Write(Byte[], Int32, Int32)

Zapíše blok bajtů do datového proudu souboru.

Write(ReadOnlySpan<Byte>)

Zapíše posloupnost bajtů z rozsahu jen pro čtení do aktuálního datového proudu souboru a posune aktuální pozici v rámci tohoto datového proudu souboru o počet zapsaných bajtů.

WriteAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronně zapíše posloupnost bajtů do aktuálního datového proudu, posune aktuální pozici v tomto datovém proudu o počet zapsaných bajtů a monitoruje žádosti o zrušení.

WriteAsync(Byte[], Int32, Int32)

Asynchronně zapíše posloupnost bajtů do aktuálního datového proudu a posune aktuální pozici v tomto datovém proudu o počet zapsaných bajtů.

(Zděděno od Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchronně zapíše posloupnost bajtů z oblasti paměti do aktuálního datového proudu souboru, posune aktuální pozici v rámci tohoto datového proudu souboru o počet zapsaných bajtů a monitoruje žádosti o zrušení.

WriteByte(Byte)

Zapíše bajt na aktuální pozici v datovém proudu souboru.

Explicitní implementace rozhraní

Name Description
IDisposable.Dispose()

Uvolní všechny prostředky používané nástrojem Stream.

(Zděděno od Stream)

Metody rozšíření

Name Description
AsInputStream(Stream)

Převede spravovaný datový proud v .NET pro aplikace pro Windows Store na vstupní datový proud v prostředí prostředí Windows Runtime.

AsOutputStream(Stream)

Převede spravovaný datový proud v .NET pro aplikace pro Windows Store na výstupní datový proud v prostředí prostředí Windows Runtime.

AsRandomAccessStream(Stream)

Převede zadaný datový proud na datový proud s náhodným přístupem.

ConfigureAwait(IAsyncDisposable, Boolean)

Konfiguruje, jak čekají na úlohy vrácené z asynchronního jednorázového použití.

Platí pro

Viz také