StreamReader.Read Methode

Definitie

Leest het volgende teken of de volgende set tekens uit de invoerstroom.

Overloads

Name Description
Read()

Hiermee wordt het volgende teken uit de invoerstroom gelezen en wordt de positie van het teken met één teken voorgelezen.

Read(Span<Char>)

Leest de tekens uit de huidige stroom in een bereik.

Read(Char[], Int32, Int32)

Leest een opgegeven maximum aantal tekens uit de huidige stroom in een buffer, beginnend bij de opgegeven index.

Read()

Hiermee wordt het volgende teken uit de invoerstroom gelezen en wordt de positie van het teken met één teken voorgelezen.

public:
 override int Read();
public override int Read();
override this.Read : unit -> int
Public Overrides Function Read () As Integer

Retouren

Het volgende teken uit de invoerstroom die wordt weergegeven als een Int32 object of -1 als er geen tekens meer beschikbaar zijn.

Uitzonderingen

Er treedt een I/O-fout op.

Voorbeelden

In het volgende codevoorbeeld ziet u een eenvoudig gebruik van de Read methode.

using System;
using System.IO;

class Test
{
    
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        try
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            using (StreamWriter sw = new StreamWriter(path))
            {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }

            using (StreamReader sr = new StreamReader(path))
            {
                while (sr.Peek() >= 0)
                {
                    Console.Write((char)sr.Read());
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        Try
            If File.Exists(path) Then
                File.Delete(path)
            End If

            Dim sw As StreamWriter = New StreamWriter(path)
            sw.WriteLine("This")
            sw.WriteLine("is some text")
            sw.WriteLine("to test")
            sw.WriteLine("Reading")
            sw.Close()

            Dim sr As StreamReader = New StreamReader(path)

            Do While sr.Peek() >= 0
                Console.Write(Convert.ToChar(sr.Read()))
            Loop
            sr.Close()
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

In het volgende codevoorbeeld ziet u hoe u één teken leest met behulp van de overbelasting van de Read() methode, waarbij de uitvoer van het ASCII-geheel getal wordt opgemaakt als decimaal en hexadecimaal getal.

using System;
using System.IO;

class StrmRdrRead
{
public static void Main()
    {
    //Create a FileInfo instance representing an existing text file.
    FileInfo MyFile=new FileInfo(@"c:\csc.txt");
    //Instantiate a StreamReader to read from the text file.
    StreamReader sr=MyFile.OpenText();
    //Read a single character.
    int FirstChar=sr.Read();
    //Display the ASCII number of the character read in both decimal and hexadecimal format.
    Console.WriteLine("The ASCII number of the first character read is {0:D} in decimal and {1:X} in hexadecimal.",
        FirstChar, FirstChar);
    //
    sr.Close();
    }
}
Imports System.IO

Class StrmRdrRead
   
   Public Shared Sub Main()
      'Create a FileInfo instance representing an existing text file.
      Dim MyFile As New FileInfo("c:\csc.txt")
      'Instantiate a StreamReader to read from the text file.
      Dim sr As StreamReader = MyFile.OpenText()
      'Read a single character.
      Dim FirstChar As Integer = sr.Read()
      'Display the ASCII number of the character read in both decimal and hexadecimal format.
      Console.WriteLine("The ASCII number of the first character read is {0:D} in decimal and {1:X} in hexadecimal.", FirstChar, FirstChar)
      sr.Close()
   End Sub
End Class

Opmerkingen

Deze methode overschrijft TextReader.Read.

Deze methode retourneert een geheel getal, zodat het -1 kan retourneren als het einde van de stream is bereikt. Als u de positie van de onderliggende stroom bewerkt nadat u gegevens in de buffer hebt gelezen, komt de positie van de onderliggende stroom mogelijk niet overeen met de positie van de interne buffer. Als u de interne buffer opnieuw wilt instellen, roept u de DiscardBufferedData methode aan. Deze methode vertraagt echter de prestaties en moet alleen worden aangeroepen wanneer dit absoluut noodzakelijk is.

Zie Algemene I/O-taken voor een lijst met algemene I/O-taken.

Zie ook

Van toepassing op

Read(Span<Char>)

Leest de tekens uit de huidige stroom in een bereik.

public:
 override int Read(Span<char> buffer);
public override int Read(Span<char> buffer);
override this.Read : Span<char> -> int
Public Overrides Function Read (buffer As Span(Of Char)) As Integer

Parameters

buffer
Span<Char>

Wanneer deze methode wordt geretourneerd, bevat de opgegeven reeks tekens die worden vervangen door de tekens die uit de huidige bron worden gelezen.

Retouren

Het aantal tekens dat is gelezen of 0 als aan het einde van de stream en er geen gegevens zijn gelezen. Het getal is kleiner dan of gelijk aan de buffer lengte, afhankelijk van of de gegevens beschikbaar zijn in de stream.

Uitzonderingen

Het aantal tekens dat uit de stroom wordt gelezen, is groter dan de buffer lengte.

buffer is null.

Van toepassing op

Read(Char[], Int32, Int32)

Leest een opgegeven maximum aantal tekens uit de huidige stroom in een buffer, beginnend bij de opgegeven index.

public:
 override int Read(cli::array <char> ^ buffer, int index, int count);
public override int Read(char[] buffer, int index, int count);
override this.Read : char[] * int * int -> int
Public Overrides Function Read (buffer As Char(), index As Integer, count As Integer) As Integer

Parameters

buffer
Char[]

Wanneer deze methode wordt geretourneerd, bevat de opgegeven tekenmatrix door de waarden tussen index en (index + count - 1) vervangen door de tekens die uit de huidige bron worden gelezen.

index
Int32

De index buffer waarop moet worden geschreven.

count
Int32

Het maximum aantal tekens dat moet worden gelezen.

Retouren

Het aantal tekens dat is gelezen of 0 als aan het einde van de stream en er geen gegevens zijn gelezen. Het getal is kleiner dan of gelijk aan de count parameter, afhankelijk van of de gegevens beschikbaar zijn in de stream.

Uitzonderingen

De bufferlengte min index is kleiner dan count.

buffer is null.

index of count is negatief.

Er treedt een I/O-fout op, zoals de stream is gesloten.

Voorbeelden

In het volgende codevoorbeeld worden vijf tekens tegelijk gelezen totdat het einde van het bestand is bereikt.

using System;
using System.IO;

class Test
{
    
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        try
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            using (StreamWriter sw = new StreamWriter(path))
            {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }

            using (StreamReader sr = new StreamReader(path))
            {
                //This is an arbitrary size for this example.
                char[] c = null;

                while (sr.Peek() >= 0)
                {
                    c = new char[5];
                    sr.ReadBlock(c, 0, c.Length);
                    //The output will look odd, because
                    //only five characters are read at a time.
                    Console.WriteLine(c);
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        Try
            If File.Exists(path) Then
                File.Delete(path)
            End If

            Dim sw As StreamWriter = New StreamWriter(path)
            sw.WriteLine("This")
            sw.WriteLine("is some text")
            sw.WriteLine("to test")
            sw.WriteLine("Reading")
            sw.Close()

            Dim sr As StreamReader = New StreamReader(path)

            Do While sr.Peek() >= 0
                'This is an arbitrary size for this example.
                Dim c(5) As Char
                sr.ReadBlock(c, 0, c.Length)
                'The output will look odd, because
                'only five characters are read at a time.
                Console.WriteLine(c)
            Loop
            sr.Close()
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

Opmerkingen

Deze methode overschrijft TextReader.Read.

Deze methode retourneert een geheel getal, zodat het 0 kan retourneren als het einde van de stream is bereikt.

Wanneer u de Read methode gebruikt, is het efficiënter om een buffer te gebruiken die dezelfde grootte heeft als de interne buffer van de stroom, waarbij de interne buffer is ingesteld op de gewenste blokgrootte en altijd kleiner is dan de blokgrootte. Als de grootte van de interne buffer niet is opgegeven toen de stroom werd gemaakt, is de standaardgrootte 4 kilobytes (4096 bytes). Als u de positie van de onderliggende stroom bewerkt nadat u gegevens in de buffer hebt gelezen, komt de positie van de onderliggende stroom mogelijk niet overeen met de positie van de interne buffer. Als u de interne buffer opnieuw wilt instellen, roept u de DiscardBufferedData methode aan. Deze methode vertraagt echter de prestaties en moet alleen worden aangeroepen wanneer dit absoluut noodzakelijk is.

Deze methode retourneert nadat het aantal tekens dat door de count parameter is opgegeven, is gelezen of het einde van het bestand is bereikt. ReadBlock is een blokkerende versie van Read.

Zie Algemene I/O-taken voor een lijst met algemene I/O-taken.

Zie ook

Van toepassing op