Erstellen von Streams

Aktualisiert: November 2007

Ein Sicherungsspeicher ist ein Speichermedium, z. B. eine Festplatte oder ein Hauptspeicher. Jeder einzelne Sicherungsspeicher implementiert seinen eigenen Stream als eine Implementierung der Stream-Klasse. Jeder Streamtyp schreibt Bytes in seinen jeweiligen Sicherungsspeicher bzw. liest sie daraus. Streams, die eine Verbindung zu Sicherungsspeichern herstellen, werden Basisstreams genannt. Basisstreams verfügen über Konstruktoren, die mit den erforderlichen Parametern ausgestattet sind, um eine Verbindung zum Sicherungsspeicher herzustellen. Die Konstruktoren von FileStream geben z. B. einen Pfadparameter an, der u. a. die Art der gemeinsamen Nutzung einer Datei durch Prozesse festlegt.

Der Entwurf der System.IO-Klassen ermöglicht einen vereinfachten Aufbau von Streams. Basisstreams können mit einem oder mehreren Pass-Through-Streams verknüpft werden, welche die gewünschte Funktionalität bereitstellen. Ein Lese- oder Schreibprogramm kann an das Ende der Kette angehängt werden, wodurch das Lesen und Schreiben der bevorzugten Typen vereinfacht wird.

Im folgenden Codebeispiel wird ein FileStream anhand der vorhandenen Datei MyFile.txt erstellt, um die Datei MyFile.txt zu puffern. (Beachten Sie, dass FileStreams standardmäßig gepuffert werden.) Anschließend wird ein StreamReader erstellt. Dieser liest Zeichen aus dem FileStream, der wiederum dem StreamReader als dessen Konstruktorargument übergeben wird. ReadLine setzt den Lesevorgang so lange fort, bis Peek keine weiteren Zeichen mehr findet.

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

Im folgenden Codebeispiel wird ein FileStream anhand der vorhandenen Datei MyFile.txt erstellt, um die Datei MyFile.txt zu puffern. (Beachten Sie, dass FileStreams standardmäßig gepuffert werden.) Anschließend wird ein BinaryReader erstellt. Dieser liest Bytes aus dem FileStream, der wiederum dem BinaryReader als dessen Konstruktorargument übergeben wird. ReadByte setzt den Lesevorgang so lange fort, bis PeekChar keine weiteren Bytes mehr findet.

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

Siehe auch

Konzepte

Grundlegende Datei-E/A

Erstellen eines Schreibers

Referenz

StreamReader

StreamReader.ReadLine

StreamReader.Peek

FileStream

BinaryReader

BinaryReader.ReadByte

BinaryReader.PeekChar