Questão:
O que é diferente entre FileStream
e StreamWriter
em .Net ?
Em que contexto você deve usá-lo? Qual é a sua vantagem e desvantagem?
É possível combinar esses dois em um?
fonte
Questão:
O que é diferente entre FileStream
e StreamWriter
em .Net ?
Em que contexto você deve usá-lo? Qual é a sua vantagem e desvantagem?
É possível combinar esses dois em um?
O que é diferente entre FileStream e StreamWriter no dotnet?
A FileStream
é a Stream
. Como todos os Streams, ele lida apenas com byte[]
dados.
A StreamWriter : TextWriter
, é decorador de stream. Um TextWriter codifica dados de texto como string ou char byte[]
e, em seguida, os grava no link Stream
.
Em que contexto você deve usá-lo? Qual é a sua vantagem e desvantagem?
Você usa um FileStream vazio quando tem byte[]
dados. Você adiciona um StreamWriter
quando quiser escrever um texto. Use um formatador ou serializador para gravar dados mais complexos.
É possível combinar esses dois em um?
Sim. Você sempre precisa de um Stream para criar um StreamWriter. O método auxiliar System.IO.File.CreateText("path")
irá criá-los em combinação e então você só precisa Dispose () o gravador externo.
FileStream
é um tipo de fluxo, que é especificamente adaptado para arquivos. Streams nativamente funcionam com bytes, no entantoStreamWriter
/ Reader irá escrever / ler texto em qualquer stream, não apenasFileStream
s. Por exemplo,MemoryStreams
,NetworkStreams
, etc ..FileStream grava bytes, StreamWriter grava texto. Isso é tudo.
fonte
Um FileStream se destina explicitamente a arquivos de trabalho.
Um StreamWriter pode ser usado para transmitir para qualquer tipo de Stream - sockets de rede, arquivos, etc.
ScottGu explica os diferentes objetos Stream muito bem aqui: http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223
fonte
Bem, do MSDN para
FileStream
:e o MSDN para
StreamWriter
:A diferença mais óbvia é que
FileStream
permite operações de leitura / gravação, enquantoStreamWriter
é somente gravação.A
StreamWriter
página continua para adicionar:Portanto, uma segunda diferença é
FileStream
para bytes, enquantoStreamWriter
é para texto.fonte
Eles são dois níveis diferentes usados na saída de informações para fontes de dados conhecidas.
A
FileStream
é um tipo de fluxo, que é conceitualmente um mecanismo que aponta para algum local e pode manipular dados de entrada e / ou saída de e para esse local. Streams existem para leitura / gravação em arquivos, conexões de rede, memória, canais, o console, ouvintes de depuração e rastreamento e alguns outros tipos de fontes de dados. Especificamente,FileStream
existe um para executar leituras e gravações no sistema de arquivos. A maioria dos fluxos é de baixo nível de uso e trata os dados como bytes.A
StreamWriter
é um wrapper para um Stream que simplifica o uso desse stream para gerar texto simples. Ele expõe métodos que pegam strings em vez de bytes e executa as conversões necessárias de e para matrizes de bytes. Existem outros escritores; o outro principal que você usaria é oXmlTextWriter
, que facilita a gravação de dados no formato XML . Existem também contrapartes do Reader para os gravadores que também envolvem um fluxo e facilitam a recuperação dos dados.fonte
Uma diferença importante (além dos comentários acima) pode ser que FileStream suporta leitura e gravação de acesso aleatório de disco em qualquer FileStream.Position especificada. Para modificações em arquivos grandes, isso pode ser inestimável.
fonte