Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Classe FileStream

Expõe uma Stream ao redor do arquivo, suportanto operações de leitura e escrita tanto síncronas, como assíncronas.

Namespace:  System.IO
Assembly:  mscorlib (em mscorlib.dll)

[ComVisibleAttribute(true)]
public class FileStream : Stream

O tipo FileStream expõe os membros a seguir.

  NomeDescrição
Método públicoFileStream(IntPtr, FileAccess) Obsoleta. Inicializa uma nova instância da classe FileStream para o identificador de arquivo especificado, com a permissão de leitura/gravação especificada.
Método públicoFileStream(SafeFileHandle, FileAccess)Inicializa uma nova instância da classe FileStream para o identificador de arquivo especificado, com a permissão de leitura/gravação especificada.
Método públicoCompatível com o XNA FrameworkFileStream(String, FileMode)Inicializa uma nova instância da classe FileStream com o modo de caminho especificado e de design.
Método públicoFileStream(IntPtr, FileAccess, Boolean) Obsoleta. Inicializa uma nova instância da classe FileStream para o identificador de arquivo especificado, com a propriedade de leitura/gravação especificada de permissão e da instância de FileStream .
Método públicoFileStream(SafeFileHandle, FileAccess, Int32)Inicializa uma nova instância da classe FileStream para o identificador de arquivo especificado, com a permissão de leitura/gravação especificada, e tamanho do buffer.
Método públicoCompatível com o XNA FrameworkFileStream(String, FileMode, FileAccess)Inicializa uma nova instância da classe FileStream com o caminho especificado, o modo de design, e a permissão de leitura/gravação.
Método públicoFileStream(IntPtr, FileAccess, Boolean, Int32) Obsoleta. Inicializa uma nova instância da classe FileStream para o identificador de arquivo especificado, com a permissão, a propriedade de instância de FileStream , e o tamanho do buffer de leitura/gravação especificados.
Método públicoFileStream(SafeFileHandle, FileAccess, Int32, Boolean)Inicializa uma nova instância da classe FileStream para o identificador de arquivo especificado, com a permissão de leitura/gravação especificada, o tamanho do buffer, e o estado síncrona ou assíncrona.
Método públicoCompatível com o XNA FrameworkFileStream(String, FileMode, FileAccess, FileShare)Inicializa uma nova instância da classe FileStream com o caminho especificado, o modo de design, a permissão de leitura/gravação, e compartilhar a permissão.
Método públicoFileStream(IntPtr, FileAccess, Boolean, Int32, Boolean) Obsoleta. Inicializa uma nova instância da classe FileStream para o identificador de arquivo especificado, com a permissão de leitura/gravação especificada, a propriedade de instância de FileStream , o tamanho do buffer, e o estado síncrona ou assíncrona.
Método públicoCompatível com o XNA FrameworkFileStream(String, FileMode, FileAccess, FileShare, Int32)Inicializa uma nova instância da classe FileStream com o caminho especificado, modo de design, de leitura/gravação e compartilhar a permissão, e o tamanho do buffer.
Método públicoCompatível com o XNA FrameworkFileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean)Inicializa uma nova instância da classe FileStream com o caminho especificado, modo de design, de leitura/gravação e compartilhar a permissão, o tamanho do buffer, e o estado síncrona ou assíncrona.
Método públicoFileStream(String, FileMode, FileAccess, FileShare, Int32, FileOptions)Inicializa uma nova instância da classe com o caminho especificado, modo de FileStream de design, e compartilhamento de leitura/gravação permissão, o acesso outro FileStreams pode que tem o mesmo arquivo, o tamanho do buffer, e opções adicionais do arquivo.
Método públicoFileStream(String, FileMode, FileSystemRights, FileShare, Int32, FileOptions)Inicializa uma nova instância da classe com o caminho especificado, modo de FileStream de design, direitos de acesso e opções adicionais permissão compartilhar, o tamanho do buffer, e o arquivo.
Método públicoFileStream(String, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity)Inicializa uma nova instância da classe com o caminho especificado, modo de FileStream de design, direitos de acesso e segurança permissão compartilhar, o tamanho do buffer, opções adicionais de arquivo, controle de acesso e físicas.
Superior

  NomeDescrição
Propriedade públicaCompatível com o XNA FrameworkCanReadObtém um valor indicando se o fluxo atual oferece suporte à leitura. (Substitui Stream.CanRead.)
Propriedade públicaCompatível com o XNA FrameworkCanSeekObtém um valor indicando se o fluxo atual suportam busca. (Substitui Stream.CanSeek.)
Propriedade públicaCompatível com o XNA FrameworkCanTimeout Obtém um valor que determina se o tempo limite do fluxo atual de pode expirar. (Herdado de Stream.)
Propriedade públicaCompatível com o XNA FrameworkCanWriteObtém um valor indicando se o fluxo atual oferece suporte a escrita. (Substitui Stream.CanWrite.)
Propriedade públicaHandle Obsoleta. Obtém o identificador de arquivo do sistema operacional para o arquivo que o objeto atual de FileStream encapsula.
Propriedade públicaCompatível com o XNA FrameworkIsAsyncObtém um valor indicando se FileStream foi aberto de forma assíncrona ou synchronously.
Propriedade públicaCompatível com o XNA FrameworkLengthObtém o tamanho em bytes de fluxo. (Substitui Stream.Length.)
Propriedade públicaCompatível com o XNA FrameworkNameObtém o nome de FileStream que foi passado para o construtor.
Propriedade públicaCompatível com o XNA FrameworkPositionObtém ou define a posição atual desse fluxo. (Substitui Stream.Position.)
Propriedade públicaCompatível com o XNA FrameworkReadTimeout Obtém ou define um valor, em milissegundos, que determina quanto tempo o fluxo tentará ler antes do tempo limite. (Herdado de Stream.)
Propriedade públicaSafeFileHandleObtém um objeto de SafeFileHandle que representa o identificador de arquivo do sistema operacional para o arquivo que o objeto atual de FileStream encapsula.
Propriedade públicaCompatível com o XNA FrameworkWriteTimeout Obtém ou define um valor, em milissegundos, que determina quanto tempo o fluxo tentará escrever antes do tempo limite. (Herdado de Stream.)
Superior

  NomeDescrição
Método públicoCompatível com o XNA FrameworkBeginRead Inicia uma operação de leitura assíncrona. (Considere usar ReadAsync ao invés deste; consulte a seção comentários.) (Substitui Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).)

In XNA Framework 3.0, esse membro é herdado de Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Método públicoCompatível com o XNA FrameworkBeginWrite Inicia uma operação de gravação assíncrona. (Considere usar WriteAsync ao invés deste; consulte a seção comentários.) (Substitui Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object).)

In XNA Framework 3.0, esse membro é herdado de Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object).
Método públicoCompatível com o XNA FrameworkCloseFecha o fluxo atual e libera os recursos (como os soquetes e identificadores de arquivo) associados com o fluxo atual. Em vez de chamar esse método, certifique-se de que o fluxo é descartado corretamente. (Herdado de Stream.)
Método públicoCopyTo(Stream) Lê os bytes do fluxo atual e os grava em outro fluxo. (Herdado de Stream.)
Método públicoCopyTo(Stream, Int32) Lê os bytes do fluxo atual e os grava em outro fluxo, usando um tamanho de buffer especificado. (Herdado de Stream.)
Método públicoCopyToAsync(Stream) Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo. (Herdado de Stream.)
Método públicoCopyToAsync(Stream, Int32) Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo, usando um tamanho de buffer especificado. (Herdado de Stream.)
Método públicoCopyToAsync(Stream, Int32, CancellationToken) Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo, usando um tamanho de buffer especificado e token de cancelamento. (Herdado de Stream.)
Método públicoCreateObjRefCria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto. (Herdado de MarshalByRefObject.)
Método protegidoCompatível com o XNA FrameworkCreateWaitHandle Obsoleta. Atribui um objeto de WaitHandle. (Herdado de Stream.)
Método públicoCompatível com o XNA FrameworkDispose()Libera os recursos usados por Stream. (Herdado de Stream.)
Método protegidoCompatível com o XNA FrameworkDispose(Boolean)Libera os recursos não gerenciados usados pelo FileStream e opcionalmente libera os recursos gerenciados. (Substitui Stream.Dispose(Boolean).)
Método públicoCompatível com o XNA FrameworkEndRead Aguarda a operação de leitura assíncrona pendente terminar. (Considere usar ReadAsync ao invés deste; consulte a seção comentários.) (Substitui Stream.EndRead(IAsyncResult).)

In XNA Framework 3.0, esse membro é herdado de Stream.EndRead(IAsyncResult).
Método públicoCompatível com o XNA FrameworkEndWrite Termina uma operação de gravação assíncrona e bloqueia até que a operação de E/S seja concluída. (Considere usar WriteAsync ao invés deste; consulte a seção comentários.) (Substitui Stream.EndWrite(IAsyncResult).)

In XNA Framework 3.0, esse membro é herdado de Stream.EndWrite(IAsyncResult).
Método públicoCompatível com o XNA FrameworkEquals(Object) Verifica se o objeto especificado é igual ao objeto atual. (Herdado de Object.)
Método protegidoCompatível com o XNA FrameworkFinalizeGarante que os recursos são liberados e outras operações de limpeza foram executadas quando o coletor de lixo recuperar FileStream. (Substitui Object.Finalize().)
Método públicoCompatível com o XNA FrameworkFlush()Buffers de limpa para esses fluxo e causas alguns dados armazenados em buffer ser escrito no arquivo. (Substitui Stream.Flush().)
Método públicoFlush(Boolean)Os buffers de limpa para esses fluxo e causas todos os dados armazenados em buffer ser escrito no arquivo, e também limpar todos os buffers intermediários do arquivo.
Método públicoFlushAsync() Limpa de forma assíncrona todos os buffers deste fluxo e faz com que todos os dados em buffer sejam gravados no dispositivo subjacente. (Herdado de Stream.)
Método públicoFlushAsync(CancellationToken)De forma assíncrona limpa todos os buffers para esse fluxo, faz com que todos os dados armazenados em buffer a serem gravados para o dispositivo subjacente, e monitora solicitações cancelar. (Substitui Stream.FlushAsync(CancellationToken).)
Método públicoGetAccessControlObtém um objeto de FileSecurity que encapsula as entradas de (ACL) a lista de controle de acesso para o arquivo descrito pelo objeto atual de FileStream .
Método públicoCompatível com o XNA FrameworkGetHashCodeServe como a função de hash padrão. (Herdado de Object.)
Método públicoGetLifetimeService Recupera o objeto atual de serviço de vida útil que controla a diretiva de vida útil para esta instância. (Herdado de MarshalByRefObject.)
Método públicoCompatível com o XNA FrameworkGetType Obtém o Type da instância atual. (Herdado de Object.)
Método públicoInitializeLifetimeService Obtém um objeto de serviço de tempo de vida para controlar a diretiva de vida útil para esta instância. (Herdado de MarshalByRefObject.)
Método públicoLockImpede outros processos de leitura ou gravação da FileStream.
Método protegidoCompatível com o XNA FrameworkMemberwiseClone()Cria uma cópia superficial do Object atual. (Herdado de Object.)
Método protegidoMemberwiseClone(Boolean) Cria uma cópia superficial do objeto MarshalByRefObject atual. (Herdado de MarshalByRefObject.)
Método protegidoObjectInvariantInfraestrutura. Obsoleta. Fornece suporte para Contract. (Herdado de Stream.)
Método públicoCompatível com o XNA FrameworkReadLê um bloco de bytes do fluxo e grava os dados em um buffer fornecido. (Substitui Stream.Read(Byte[], Int32, Int32).)
Método públicoReadAsync(Byte[], Int32, Int32) Lê de forma assíncrona uma sequência de bytes do fluxo atual e avança a posição do fluxo pelo número de bytes. (Herdado de Stream.)
Método públicoReadAsync(Byte[], Int32, Int32, CancellationToken) Lê de forma assíncrona uma sequência de bytes do fluxo atual, avança a posição do fluxo pelo número de bytes, e monitora solicitações de cancelamento. (Substitui Stream.ReadAsync(Byte[], Int32, Int32, CancellationToken).)
Método públicoCompatível com o XNA FrameworkReadByteLer bytes de um arquivo e avança a posição de leitura um byte. (Substitui Stream.ReadByte().)
Método públicoCompatível com o XNA FrameworkSeekDefine a posição atual desse fluxo para o valor fornecido. (Substitui Stream.Seek(Int64, SeekOrigin).)
Método públicoSetAccessControlAplica as entradas de (ACL) a lista de controle de acesso descritas por um objeto de FileSecurity o arquivo descrito pelo objeto atual de FileStream .
Método públicoCompatível com o XNA FrameworkSetLengthDefina o tamanho desse fluxo para o valor fornecido. (Substitui Stream.SetLength(Int64).)
Método públicoCompatível com o XNA FrameworkToStringRetorna uma string que representa o objeto atual. (Herdado de Object.)
Método públicoUnlockPermite o acesso por outros processos a todo ou parte de um arquivo que está bloqueado anteriormente.
Método públicoCompatível com o XNA FrameworkWriteGrava um bloco de bytes o fluxo de arquivo. (Substitui Stream.Write(Byte[], Int32, Int32).)
Método públicoWriteAsync(Byte[], Int32, Int32)De forma assíncrona grava uma sequência de bytes no fluxo atual e avança a posição atual dentro desse fluxo pelo número de bytes escritos. (Herdado de Stream.)
Método públicoWriteAsync(Byte[], Int32, Int32, CancellationToken)De forma assíncrona grava uma sequência de bytes no fluxo atual, avança a posição atual dentro desse fluxo pelo número de bytes escritos, e monitora solicitações cancelar. (Substitui Stream.WriteAsync(Byte[], Int32, Int32, CancellationToken).)
Método públicoCompatível com o XNA FrameworkWriteByte Grava um byte na posição atual no fluxo do arquivo. (Substitui Stream.WriteByte(Byte).)
Superior

Use a classe de FileStream para ler de escreva-a, a, aberta, e fecham arquivos em um sistema de arquivos, e para manipular outros identificadores de relacionados do sistema operacional, incluindo pipes, a entrada padrão, e saída padrão. Você pode usar Read, Write, CopyTo, e métodos de Flush para executar operações síncronas, ou ReadAsync, WriteAsync, CopyToAsync, e métodos de FlushAsync para executar operações assíncronas. Use os métodos assíncronos para executar operações de arquivo pesadas sem bloqueio o segmento principal. Esta conta de desempenho é particularmente importante em um aplicativo de Windows Store ou no aplicativo de área de trabalho onde uma operação demorada de fluxo pode bloquear o encadeamento de interface do usuário e fazer seu aplicativo parecer como se não estiver trabalhando. FileStream armazena em buffer entrada e saída para melhor desempenho.

A propriedade de IsAsync detectar se o identificador de arquivo foi aberto de forma assíncrona. Você especificar este valor quando você cria uma instância da classe de FileStream que usa um construtor que tem isAsync, useAsync, ou o parâmetro de options . Quando a propriedade é true, o fluxo utiliza E/S sobrepostos para executar operações de forma assíncrona de arquivo. No entanto, a propriedade de IsAsync não tem que ser true para chamar ReadAsync, WriteAsync, ou o método de CopyToAsync . Quando a propriedade de IsAsync é false e você chama a leitura e operações de gravação assíncronas, o encadeamento de interface de usuário não está bloqueado ainda, mas a operação real de E/S é executada synchronously.

O método de Seek suporta acesso aleatório aos arquivos. Seek permite que a posição de leitura/gravação é movida para qualquer posição no arquivo. Isso é feito com parâmetros de ponto de referência de deslocamento de bytes. O deslocamento de bytes é relativo ao ponto de referência de pesquisa, que pode ser o início, a posição atual, ou final do arquivo base, como representado por três membros de enumeração SeekOrigin .

ObservaçãoObservação

Os arquivos de disco sempre suportam de acesso aleatório. No momento de compilação, o valor da propriedade de CanSeek é definido como true ou a false dependendo do tipo de arquivo subjacente. Se o tipo de arquivo base é FILE_TYPE_DISK, conforme definido em winbase.h, o valor da propriedade de CanSeek é true. Caso contrário, o valor da propriedade de CanSeek é false.

Se um processo termina com parte de um arquivo com barreira ou fechar um arquivo que possui bloqueios pendentes, o comportamento é indefinido.

Para operações de diretório e outras operações de arquivo, consulte File, Directory, e classes de Path . A classe de File é um utilitário de classe que tem métodos estáticos principalmente para a criação de objetos de FileStream baseados em caminhos de arquivo. A classe de MemoryStream cria um fluxo de uma matriz de bytes e é semelhante à classe de FileStream .

Para obter uma lista das operações de arquivo comum e do diretório, consulte Tarefas comuns de E/S.

Detecção de alterações feitas na posição de fluxo

Quando um objeto de FileStream não tem uma propriedade exclusiva no manipulador, outro segmento pode acessar o identificador de arquivo simultaneamente e mudar a posição do ponteiro do arquivo de sistema operacional que está associado com o identificador de arquivo. Nesse caso, a posição armazenada em cachê no objeto de FileStream e os dados armazenados em cachê no buffer pode ser confirmados. O objeto de FileStream execução rotineiramente verifica os métodos que acessam o buffer armazenado em cachê para garantir que a posição de gerenciamento do sistema operacional é a mesma que a posição armazenada em cachê usado pelo objeto de FileStream .

Se uma alteração inesperada na posição de identificador é detectada em uma chamada para o método de Read , o.NET Framework descarta o conteúdo do buffer e ler o fluxo de arquivo novamente. Isso pode afetar o desempenho, dependendo do tamanho do arquivo e todos os outros processos que podem afetar a posição do fluxo de arquivo.

Se uma alteração inesperada na posição de identificador é detectada em uma chamada para o método de Write , o conteúdo do buffer são descartados e de IOException uma exceção é lançada.

Um objeto de FileStream não terá uma propriedade exclusiva na alça ou quando a propriedade de SafeFileHandle é acessada para expor a alça ou o objeto de FileStream é dado a propriedade de SafeFileHandle no construtor.

O exemplo a seguir demonstra alguns dos construtores de 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);
            while (fs.Read(b,0,b.Length) > 0)
            {
                Console.WriteLine(temp.GetString(b));
            }
        }
    }

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


O exemplo a seguir mostra como escrever de forma assíncrona a um arquivo.


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);
            }
        }
    }
}


.NET Framework

Com suporte em: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Qualquer estático (Shared no Visual Basic) membro público desse tipo é thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft