Erstellen von StreamsCompose streams

Ein Sicherungsspeicher ist ein Speichermedium, wie etwa ein Datenträger oder Arbeitsspeicher.A backing store is a storage medium, such as a disk or memory. Jeder einzelne Sicherungsspeicher implementiert seinen eigenen Datenstrom als Implementierung der Stream-Klasse.Each different backing store implements its own stream as an implementation of the Stream class.

Jeder Datenstromtyp liest und schreibt Bytes in einen bzw. aus einem angegebenen Sicherungsspeicher.Each stream type reads and writes bytes from and to its given backing store. Datenströme, die eine Verbindung mit Sicherungsspeichern herstellen, werden als Basisdatenströme bezeichnet.Streams that connect to backing stores are called base streams. Basisdatenströme umfassen Konstruktoren mit den erforderlichen Parametern, um eine Verbindung zwischen dem Datenstrom und dem Sicherungsspeicher herzustellen.Base streams have constructors with the parameters necessary to connect the stream to the backing store. Beispielsweise weist FileStream Konstruktoren auf, die einen Pfadparameter angeben, der wiederum die Freigabe der Datei für Prozesse angibt.For example, FileStream has constructors that specify a path parameter, which specifies how the file will be shared by processes.

Der Entwurf der System.IO-Klassen ermöglicht ein einfacheres Erstellen von Datenströmen.The design of the System.IO classes provides simplified stream composition. Sie können Basisdatenströme an mindestens einen Pass-Through-Datenstrom anfügen, der die von Ihnen gewünschte Funktionalität bereitstellt.You can attach base streams to one or more pass-through streams that provide the functionality you want. Sie können einen Reader oder Writer an das Ende der Kette anfügen, damit die bevorzugten Typen mühelos gelesen oder geschrieben werden können.You can attach a reader or writer to the end of the chain, so the preferred types can be read or written easily.

In den folgenden Codebeispielen wird ein FileStream um die vorhandene Datei MyFile.txt erstellt, um MyFile.txt zu puffern.The following code examples create a FileStream around the existing MyFile.txt in order to buffer MyFile.txt. Beachten Sie, dass FileStreams standardmäßig gepuffert werden.Note that FileStreams are buffered by default.

Wichtig

In den Beispielen wird angenommen, dass eine Datei mit dem Namen MyFile.txt bereits in demselben Ordner vorhanden ist, in dem sich auch die App befindet.The examples assume that a file named MyFile.txt already exists in the same folder as the app.

Beispiel: Verwenden von StreamReaderExample: Use StreamReader

In dem folgenden Beispiel wird ein StreamReader zum Lesen von Zeichen aus dem FileStream erstellt, der als Konstruktorargument an den StreamReader übergeben wird.The following example creates a StreamReader to read characters from the FileStream, which is passed to the StreamReader as its constructor argument. Anschließend liest StreamReader.ReadLine, bis StreamReader.Peek keine Zeichen mehr findet.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

Beispiel: Verwenden von BinaryReaderExample: Use BinaryReader

In dem folgenden Beispiel wird ein BinaryReader zum Lesen von Bytes aus dem FileStream erstellt, der als Konstruktorargument an den BinaryReader übergeben wird.The following example creates a BinaryReader to read bytes from the FileStream, which is passed to the BinaryReader as its constructor argument. Anschließend liest ReadByte, bis PeekChar keine Bytes mehr findet.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

Siehe auchSee also