Tworzenie strumieniCompose streams

Magazyn zapasowy jest nośnikiem magazynującym, takim jak dysk lub pamięć.A backing store is a storage medium, such as a disk or memory. Każdy inny magazyn zapasowy implementuje swój własny strumień jako implementację klasy Stream.Each different backing store implements its own stream as an implementation of the Stream class.

Każdy typ strumienia odczytuje i zapisuje bajty z i do danego magazynu zapasowego.Each stream type reads and writes bytes from and to its given backing store. Strumienie łączące się z magazynami zapasowymi są nazywane strumieniami podstawowymi.Streams that connect to backing stores are called base streams. Strumienie podstawowe mają konstruktory z parametrami niezbędnymi do połączenia strumienia z magazynem zapasowym.Base streams have constructors with the parameters necessary to connect the stream to the backing store. Na przykład FileStream ma konstruktory, które określają parametr path, który określa sposób, w jaki plik będzie współużytkowany przez procesy.For example, FileStream has constructors that specify a path parameter, which specifies how the file will be shared by processes.

Projekt klas System.IO zapewnia uproszczoną transkompozycję strumienia.The design of the System.IO classes provides simplified stream composition. Można dołączyć strumienie podstawowe do co najmniej jednego strumienia przekazującego, który zapewnia odpowiednie funkcje.You can attach base streams to one or more pass-through streams that provide the functionality you want. Do końca łańcucha można dołączyć czytelnika lub moduł zapisujący, dzięki czemu preferowane typy mogą być łatwo odczytywane lub zapisywane.You can attach a reader or writer to the end of the chain, so the preferred types can be read or written easily.

Poniższy przykład kodu tworzy obiekt FILESTREAM wokół istniejącego pliku. txt w celu buforowania pliku. txt.The following code examples create a FileStream around the existing MyFile.txt in order to buffer MyFile.txt. Należy pamiętać, że FILESTREAM domyślnie są buforowane.Note that FileStreams are buffered by default.

Ważne

W przykładach założono, że plik o nazwie mój plik. txt już istnieje w tym samym folderze, w którym znajduje się aplikacja.The examples assume that a file named MyFile.txt already exists in the same folder as the app.

Przykład: Użyj StreamReaderExample: Use StreamReader

Poniższy przykład tworzy StreamReader do odczytywania znaków z FILESTREAM, który jest przesyłany do StreamReader jako argument konstruktora.The following example creates a StreamReader to read characters from the FileStream, which is passed to the StreamReader as its constructor argument. StreamReader.ReadLine następnie odczytuje do momentu, gdy StreamReader.Peek nie znajdzie więcej znaków.StreamReader.ReadLine then reads until StreamReader.Peek finds no more characters.

using System;
using System.IO;

public class CompBuf
{
    private const string FILE_NAME = "MyFile.txt";

    public static void Main()
    {
        if (!File.Exists(FILE_NAME))
        {
            Console.WriteLine($"{FILE_NAME} does not exist!");
            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.
        using (StreamReader sr = new StreamReader(fsIn))
        {
            string input;
            // While not at the end of the file, read lines from the file.
            while (sr.Peek() > -1)
            {
                input = sr.ReadLine();
                Console.WriteLine(input);
            }
        }
    }
}
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($"{FILE_NAME} does not exist!")
            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.
        Using sr As New StreamReader(fsIn)
            Dim input As String
            ' While not at the end of the file, read lines from the file.
            While sr.Peek() > -1
                input = sr.ReadLine()
                Console.WriteLine(input)
            End While
        End Using
    End Sub
End Class

Przykład: Użyj BinaryReaderExample: Use BinaryReader

Poniższy przykład tworzy BinaryReader do odczytywania bajtów z FILESTREAM, który jest przesyłany do BinaryReader jako argument konstruktora.The following example creates a BinaryReader to read bytes from the FileStream, which is passed to the BinaryReader as its constructor argument. ReadByte następnie odczytuje do momentu, gdy PeekChar nie znajdzie więcej bajtów.ReadByte then reads until PeekChar finds no more bytes.

using System;
using System.IO;

public class ReadBuf
{
    private const string FILE_NAME = "MyFile.txt";

    public static void Main()
    {
        if (!File.Exists(FILE_NAME))
        {
            Console.WriteLine($"{FILE_NAME} does not exist.");
            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.
        using (BinaryReader br = new BinaryReader(f))
        {
            byte input;
            // While not at the end of the file, read lines from the file.
            while (br.PeekChar() > -1 )
            {
                input = br.ReadByte();
                Console.WriteLine(input);
            }
        }
    }
}
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($"{FILE_NAME} does not exist.")
            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.
        Using br As new BinaryReader(f)
            Dim input As Byte
            ' While not at the end of the file, read lines from the file.
            While br.PeekChar() > -1
                input = br.ReadByte()
                Console.WriteLine (input)
            End While
        End Using
    End Sub
End Class

Zobacz takżeSee also