Partilhar via


Compondo fluxos

Um armazenamento de backup é um meio de armazenamento, como um disco ou memória.Cada armazenamento de backup diferente implementa seu próprio fluxo como uma implementação da classe Stream.Cada tipo de fluxo lê e grava bytes de e para seu armazenamento de backup específico.Fluxos que se conectam aos armazenamentos de backup são chamados fluxos base.Fluxos base têm construtores que possuem os parâmetros necessários para conectar o fluxo ao armazenamento de backup.Por exemplo, FileStream tem construtores que especificam um parâmetro de caminho, que especifica como o arquivo será compartilhado por processos e assim por diante.

O design das classes System.IO fornece composição de fluxo simplificada.Fluxos base podem ser anexados a um ou mais fluxos de passagem que fornecem a funcionalidade desejada.Um leitor ou gravador pode ser anexado ao final da cadeia para que os tipos preferenciais possam ser lidos ou gravados facilmente.

O exemplo de código a seguir cria um FileStream ao redor do MyFile.txt existente para armazenar MyFile.txt em buffer.(Observe que FileStreams são armazenados em buffer por padrão.) Em seguida, um StreamReader é criado para ler caracteres dos FileStream, que é passada para o StreamReader sistema autônomo seu argumento do construtor.ReadLine Leituras até Peek não localiza nenhum mais caracteres.

Option Explicit On 
Option Strict On
Imports System
Imports System.IO
Public Class CompBuf
    Private Const FILE_NAME As String = "MyFile.txt"
    Public Shared Sub Main()
        If Not File.Exists(FILE_NAME) Then
            Console.WriteLine("{0} does not exist!", FILE_NAME)
            Return
        End If
        Dim fsIn As New FileStream(FILE_NAME, FileMode.Open, FileAccess.Read, FileShare.Read)
        ' Create an instance of StreamReader that can read 
        ' characters from the FileStream.
        Dim sr As New StreamReader(fsIn)
        ' While not at the end of the file, read lines from the file.
        While sr.Peek() > -1
            Dim input As String = sr.ReadLine()
            Console.WriteLine(input)
        End While
        sr.Close()
    End Sub
End Class
using System;
using System.IO;
public class CompBuf 
{
    private const string FILE_NAME = "MyFile.txt";
    public static void Main(String[] args) 
    {
        if (!File.Exists(FILE_NAME)) 
        {
            Console.WriteLine("{0} does not exist!", FILE_NAME);
            return;
        }
        FileStream fsIn = new FileStream(FILE_NAME, FileMode.Open,
            FileAccess.Read, FileShare.Read);
        // Create an instance of StreamReader that can read 
        // characters from the FileStream.
        StreamReader sr = new StreamReader(fsIn); 
        // While not at the end of the file, read lines from the file.
        while (sr.Peek()>-1) 
        {
            String input = sr.ReadLine();
            Console.WriteLine (input);
        }
        sr.Close();
    }
}

O exemplo de código a seguir cria um FileStream ao redor do MyFile.txt existente para armazenar MyFile.txt em buffer.(Observe que FileStreams são armazenados em buffer por padrão.) Em seguida, um BinaryReader é criada para ler sistema autônomo bytes do FileStream, que é passada para o BinaryReader sistema autônomo seu argumento do construtor.ReadByte Leituras até PeekChar não localiza nenhum mais bytes.

Option Explicit On 
Option Strict On
Imports System
Imports System.IO
Public Class ReadBuf
    Private Const FILE_NAME As String = "MyFile.txt"
    Public Shared Sub Main()
        If Not File.Exists(FILE_NAME) Then
            Console.WriteLine("{0} does not exist.", FILE_NAME)
            Return
        End If
        Dim f As New FileStream(FILE_NAME, FileMode.Open, FileAccess.Read,
            FileShare.Read)
        ' Create an instance of BinaryReader that can 
        ' read bytes from the FileStream.
        Dim sr As New BinaryReader(f)
        ' While not at the end of the file, read lines from the file.
        While sr.PeekChar() > -1
            Dim input As Byte = sr.ReadByte()
            Console.WriteLine(input)
        End While
        sr.Close()
    End Sub
End Class
using System;
using System.IO;
public class ReadBuf 
{
    private const string FILE_NAME = "MyFile.txt";
    public static void Main(String[] args) 
    {
        if (!File.Exists(FILE_NAME)) 
        {
            Console.WriteLine("{0} does not exist.", FILE_NAME);
            return;
        }
        FileStream f = new FileStream(FILE_NAME, FileMode.Open,
            FileAccess.Read, FileShare.Read);
        // Create an instance of BinaryReader that can 
        // read bytes from the FileStream.
        BinaryReader sr = new BinaryReader(f); 
        // While not at the end of the file, read lines from the file.
        while (sr.PeekChar()>-1) 
        {
            byte input = sr.ReadByte();
            Console.WriteLine (input);
        }
        sr.Close();
    }
}

Consulte também

Conceitos

Arquivo básico de E/S

Criando um gravador

Referência

StreamReader

StreamReader.ReadLine

StreamReader.Peek

FileStream

BinaryReader

BinaryReader.ReadByte

BinaryReader.PeekChar