Vytváření datových proudů

Záložní úložiště je úložné médium, například disk nebo paměť. Každý jiný záložní úložiště implementuje vlastní datový proud jako implementaci Stream třídy.

Každý typ datového proudu čte a zapisuje bajty z a do příslušného záložního úložiště. Toky, které se připojují k záložním úložištím, se nazývají základní datové proudy. Základní datové proudy mají konstruktory s parametry nezbytnými pro připojení datového proudu k záložnímu úložišti. Má například FileStream konstruktory, které určují parametr cesty, který určuje, jak bude soubor sdílen procesy.

Návrh tříd poskytuje zjednodušené složení datových System.IO proudů. Základní streamy můžete připojit k jednomu nebo několika průchozím datovým proudům, které poskytují požadované funkce. Ke konci řetězce můžete připojit čtečku nebo zapisovač, takže upřednostňované typy lze snadno číst nebo zapisovat.

Následující příklady kódu vytvoří FileStream kolem existujícího MyFile.txt, aby se MyFile.txt vyrovnávací paměti. Všimněte si, že soubor Toky se ve výchozím nastavení ukládají do vyrovnávací paměti.

Důležité

Příklady předpokládají, že soubor s názvem MyFile.txt již existuje ve stejné složce jako aplikace.

Příklad: Použití třídy StreamReader

Následující příklad vytvoří čtení StreamReader znaků z FileStream, který je předán StreamReader jako jeho konstruktor argumentu. StreamReader.ReadLine pak přečte, dokud StreamReader.Peek nenajde žádné další znaky.

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;
        }
        // Create an instance of StreamReader characters from the file.
        using (StreamReader sr = new StreamReader(FILE_NAME))
        {
            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

Příklad: Použití BinaryReader

Následující příklad vytvoří čtení BinaryReader bajtů z FileStream, který je předán BinaryReader jako jeho konstruktor argumentu. ReadByte pak přečte, dokud PeekChar nenajde žádné další bajty.

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

Viz také