FileStream Clase

Definición

Proporciona un Stream para un archivo, que admite operaciones de lectura y escritura sincrónicas y asincrónicas.

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
Herencia
FileStream
Herencia
Derivado
Atributos

Ejemplos

En el ejemplo siguiente se muestran algunos de los FileStream constructores.

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

En el ejemplo siguiente se muestra cómo escribir en un archivo de forma asincrónica. Este código se ejecuta en una aplicación de WPF que tiene un TextBlock denominado UserInput y un botón conectado a un controlador de eventos Click denominado Button_Click. La ruta de acceso del archivo debe cambiarse a un archivo que existe en el equipo.

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

Comentarios

Para obtener más información sobre esta API, consulte Comentarios complementarios de API para FileStream.

Constructores

Nombre Description
FileStream(IntPtr, FileAccess, Boolean, Int32, Boolean)
Obsoletos.
Obsoletos.

Inicializa una nueva instancia de la FileStream clase para el identificador de archivo especificado, con el permiso de lectura y escritura especificado, FileStream la propiedad de instancia, el tamaño del búfer y el estado sincrónico o asincrónico especificado.

FileStream(IntPtr, FileAccess, Boolean, Int32)
Obsoletos.
Obsoletos.

Inicializa una nueva instancia de la FileStream clase para el identificador de archivo especificado, con el permiso de lectura y escritura especificado, FileStream la propiedad de instancia y el tamaño del búfer.

FileStream(IntPtr, FileAccess, Boolean)
Obsoletos.
Obsoletos.

Inicializa una nueva instancia de la FileStream clase para el identificador de archivo especificado, con el permiso de lectura y escritura especificado y FileStream la propiedad de instancia.

FileStream(IntPtr, FileAccess)
Obsoletos.
Obsoletos.

Inicializa una nueva instancia de la FileStream clase para el identificador de archivo especificado, con el permiso de lectura y escritura especificado.

FileStream(SafeFileHandle, FileAccess, Int32, Boolean)

Inicializa una nueva instancia de la FileStream clase para el identificador de archivo especificado, con el permiso de lectura y escritura especificado, el tamaño del búfer y el estado sincrónico o asincrónico especificado.

FileStream(SafeFileHandle, FileAccess, Int32)

Inicializa una nueva instancia de la FileStream clase para el identificador de archivo especificado, con el permiso de lectura y escritura especificados y el tamaño del búfer.

FileStream(SafeFileHandle, FileAccess)

Inicializa una nueva instancia de la FileStream clase para el identificador de archivo especificado, con el permiso de lectura y escritura especificado.

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

Inicializa una nueva instancia de la FileStream clase con la ruta de acceso, el modo de creación, el permiso de lectura y escritura y uso compartido, el tamaño del búfer y el estado sincrónico o asincrónico especificado.

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

Inicializa una nueva instancia de la FileStream clase con la ruta de acceso, el modo de creación, el permiso de lectura y escritura y uso compartido especificados, el acceso a otros FileStreams puede tener en el mismo archivo, el tamaño del búfer y las opciones de archivo adicionales.

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

Inicializa una nueva instancia de la FileStream clase con la ruta de acceso, el modo de creación, el permiso de lectura y escritura y uso compartido especificados y el tamaño del búfer.

FileStream(String, FileMode, FileAccess, FileShare)

Inicializa una nueva instancia de la FileStream clase con la ruta de acceso, el modo de creación, el permiso de lectura y escritura y el permiso de uso compartido especificados.

FileStream(String, FileMode, FileAccess)

Inicializa una nueva instancia de la FileStream clase con la ruta de acceso, el modo de creación y el permiso de lectura y escritura especificados.

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

Inicializa una nueva instancia de la FileStream clase con la ruta de acceso, el modo de creación, los derechos de acceso y el permiso de uso compartido, el tamaño del búfer, las opciones de archivo adicionales, el control de acceso y la seguridad de auditoría.

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

Inicializa una nueva instancia de la FileStream clase con la ruta de acceso, el modo de creación, los derechos de acceso y el permiso de uso compartido, el tamaño del búfer y las opciones de archivo adicionales.

FileStream(String, FileMode)

Inicializa una nueva instancia de la FileStream clase con la ruta de acceso y el modo de creación especificados.

Propiedades

Nombre Description
CanRead

Obtiene un valor que indica si la secuencia actual admite la lectura.

CanSeek

Obtiene un valor que indica si la secuencia actual admite la búsqueda.

CanTimeout

Obtiene un valor que determina si la secuencia actual puede agotar el tiempo de espera.

(Heredado de Stream)
CanWrite

Obtiene un valor que indica si la secuencia actual admite la escritura.

Handle
Obsoletos.
Obsoletos.

Obtiene el identificador de archivo del sistema operativo para el archivo que el objeto actual FileStream encapsula.

IsAsync

Obtiene un valor que indica si FileStream se abrió de forma asincrónica o sincrónica.

Length

Obtiene la longitud en bytes de la secuencia.

Name

Obtiene la ruta de acceso absoluta del archivo abierto en .FileStream

Position

Obtiene o establece la posición actual de esta secuencia.

ReadTimeout

Obtiene o establece un valor, en milisegundos, que determina cuánto tiempo intentará leer la secuencia antes de que se agote el tiempo de espera.

(Heredado de Stream)
SafeFileHandle

Obtiene un SafeFileHandle objeto que representa el identificador de archivo del sistema operativo para el archivo que el objeto actual FileStream encapsula.

WriteTimeout

Obtiene o establece un valor, en milisegundos, que determina cuánto tiempo intentará escribir la secuencia antes de que se agote el tiempo de espera.

(Heredado de Stream)

Métodos

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

Inicia una operación de lectura asincrónica. Considere usar ReadAsync(Byte[], Int32, Int32, CancellationToken) en su lugar.

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

Comienza una operación de escritura asincrónica. Considere usar WriteAsync(Byte[], Int32, Int32, CancellationToken) en su lugar.

Close()

Cierra la secuencia actual y libera los recursos (como sockets y identificadores de archivo) asociados a la secuencia actual.

Close()

Cierra la secuencia actual y libera los recursos (como sockets y identificadores de archivo) asociados a la secuencia actual. En lugar de llamar a este método, asegúrese de que la secuencia se elimina correctamente.

(Heredado de Stream)
CopyTo(Stream, Int32)

Lee los bytes de la secuencia actual y los escribe en otra secuencia mediante un tamaño de búfer especificado. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CopyTo(Stream)

Lee los bytes de la secuencia actual y los escribe en otra secuencia. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CopyToAsync(Stream, CancellationToken)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, mediante un token de cancelación especificado. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Lee de forma asincrónica los bytes de la secuencia de archivos actual y los escribe en otra secuencia, mediante un tamaño de búfer y un token de cancelación especificados.

CopyToAsync(Stream, Int32, CancellationToken)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, mediante un tamaño de búfer y un token de cancelación especificados. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CopyToAsync(Stream, Int32)

Lee de forma asincrónica los bytes de la secuencia actual y los escribe en otra secuencia mediante un tamaño de búfer especificado. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CopyToAsync(Stream)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CreateObjRef(Type)

Crea un objeto que contiene toda la información pertinente necesaria para generar un proxy usado para comunicarse con un objeto remoto.

(Heredado de MarshalByRefObject)
CreateWaitHandle()
Obsoletos.

Asigna un WaitHandle objeto .

(Heredado de Stream)
Dispose()

Libera todos los recursos usados por .Stream

(Heredado de Stream)
Dispose(Boolean)

Libera los recursos no administrados utilizados por FileStream y, opcionalmente, libera los recursos administrados.

DisposeAsync()

Libera de forma asincrónica los recursos no administrados usados por .FileStream

EndRead(IAsyncResult)

Espera a que se complete la operación de lectura asincrónica pendiente. (Considere la posibilidad de usar ReadAsync(Byte[], Int32, Int32, CancellationToken) en su lugar).

EndWrite(IAsyncResult)

Finaliza una operación de escritura asincrónica y bloquea hasta que se complete la operación de E/S. (Considere la posibilidad de usar WriteAsync(Byte[], Int32, Int32, CancellationToken) en su lugar).

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
Finalize()

Garantiza que los recursos se liberan y se realizan otras operaciones de limpieza cuando el recolector de elementos no utilizados reclama el FileStream.

Flush()

Borra los búferes de esta secuencia y hace que los datos almacenados en búfer se escriban en el archivo.

Flush(Boolean)

Borra los búferes de esta secuencia y hace que los datos almacenados en búfer se escriban en el archivo y también borra todos los búferes de archivos intermedios.

FlushAsync()

Borra de forma asincrónica todos los búferes de esta secuencia y hace que los datos almacenados en búfer se escriban en el dispositivo subyacente.

(Heredado de Stream)
FlushAsync(CancellationToken)

Borra de forma asincrónica todos los búferes de esta secuencia, hace que los datos almacenados en búfer se escriban en el archivo y supervisa las solicitudes de cancelación.

GetAccessControl()

Obtiene un FileSecurity objeto que encapsula las entradas de la lista de control de acceso (ACL) para el archivo descrito por el objeto actual FileStream .

GetHashCode()

Actúa como la función hash predeterminada.

(Heredado de Object)
GetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InitializeLifetimeService()

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
Lock(Int64, Int64)

Impide que otros procesos lean o escriban en .FileStream

MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto actual MarshalByRefObject .

(Heredado de MarshalByRefObject)
ObjectInvariant()
Obsoletos.

Proporciona compatibilidad con .Contract

(Heredado de Stream)
Read(Byte[], Int32, Int32)

Lee un bloque de bytes de la secuencia y escribe los datos en un búfer determinado.

Read(Span<Byte>)

Lee una secuencia de bytes de la secuencia de archivos actual y avanza la posición dentro de la secuencia de archivos por el número de bytes leídos.

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

Lee de forma asincrónica una secuencia de bytes de la secuencia de archivos actual y las escribe en una matriz de bytes a partir de un desplazamiento especificado, avanza la posición dentro de la secuencia de archivos por el número de bytes leídos y supervisa las solicitudes de cancelación.

ReadAsync(Byte[], Int32, Int32)

Lee de forma asincrónica una secuencia de bytes de la secuencia actual y avanza la posición dentro de la secuencia por el número de bytes leídos.

(Heredado de Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Lee de forma asincrónica una secuencia de bytes de la secuencia de archivos actual y las escribe en una región de memoria, avanza la posición dentro de la secuencia de archivos por el número de bytes leídos y supervisa las solicitudes de cancelación.

ReadByte()

Lee un byte del archivo y avanza la posición de lectura de un byte.

Seek(Int64, SeekOrigin)

Establece la posición actual de esta secuencia en el valor especificado.

SetAccessControl(FileSecurity)

Aplica entradas de lista de control de acceso (ACL) descritas por un FileSecurity objeto al archivo descrito por el objeto actual FileStream .

SetLength(Int64)

Establece la longitud de esta secuencia en el valor especificado.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
Unlock(Int64, Int64)

Permite el acceso de otros procesos a todo o parte de un archivo que se bloqueó anteriormente.

Write(Byte[], Int32, Int32)

Escribe un bloque de bytes en la secuencia de archivos.

Write(ReadOnlySpan<Byte>)

Escribe una secuencia de bytes de un intervalo de solo lectura en la secuencia de archivos actual y avanza la posición actual dentro de esta secuencia de archivos por el número de bytes escritos.

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

Escribe de forma asincrónica una secuencia de bytes en la secuencia actual, avanza la posición actual dentro de esta secuencia por el número de bytes escritos y supervisa las solicitudes de cancelación.

WriteAsync(Byte[], Int32, Int32)

Escribe de forma asincrónica una secuencia de bytes en la secuencia actual y avanza la posición actual dentro de esta secuencia por el número de bytes escritos.

(Heredado de Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Escribe de forma asincrónica una secuencia de bytes de una región de memoria en la secuencia de archivos actual, avanza la posición actual dentro de esta secuencia de archivos por el número de bytes escritos y supervisa las solicitudes de cancelación.

WriteByte(Byte)

Escribe un byte en la posición actual en la secuencia de archivos.

Implementaciones de interfaz explícitas

Nombre Description
IDisposable.Dispose()

Libera todos los recursos usados por .Stream

(Heredado de Stream)

Métodos de extensión

Nombre Description
AsInputStream(Stream)

Convierte una secuencia administrada en .NET para aplicaciones de la Tienda Windows en un flujo de entrada en Windows Runtime.

AsOutputStream(Stream)

Convierte una secuencia administrada en .NET para aplicaciones de la Tienda Windows en un flujo de salida en Windows Runtime.

AsRandomAccessStream(Stream)

Convierte la secuencia especificada en una secuencia de acceso aleatorio.

ConfigureAwait(IAsyncDisposable, Boolean)

Configura cómo se realizarán las esperas en las tareas devueltas desde un descartable asincrónico.

Se aplica a

Consulte también