StreamReader.Read Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Läser nästa tecken eller nästa uppsättning tecken från indataströmmen.
Överlagringar
| Name | Description |
|---|---|
| Read() |
Läser nästa tecken från indataströmmen och flyttar fram teckenpositionen med ett tecken. |
| Read(Span<Char>) |
Läser tecknen från den aktuella strömmen till ett intervall. |
| Read(Char[], Int32, Int32) |
Läser ett angivet maximalt antal tecken från den aktuella strömmen till en buffert, med början vid det angivna indexet. |
Read()
- Källa:
- StreamReader.cs
- Källa:
- StreamReader.cs
- Källa:
- StreamReader.cs
- Källa:
- StreamReader.cs
- Källa:
- StreamReader.cs
Läser nästa tecken från indataströmmen och flyttar fram teckenpositionen med ett tecken.
public:
override int Read();
public override int Read();
override this.Read : unit -> int
Public Overrides Function Read () As Integer
Returer
Nästa tecken från indataströmmen som representeras som ett Int32 objekt eller -1 om inga fler tecken är tillgängliga.
Undantag
Ett I/O-fel inträffar.
Exempel
I följande kodexempel visas en enkel användning av Read metoden.
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
Följande kodexempel visar hur du läser ett enda tecken med hjälp av Read() metodens överlagring och formaterar ASCII-heltalsutdata som decimaler och hexadecimala.
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
Kommentarer
Den här metoden åsidosätter TextReader.Read.
Den här metoden returnerar ett heltal så att det kan returnera -1 om strömmens slut har nåtts. Om du ändrar positionen för den underliggande strömmen efter att ha läst in data i bufferten kanske den underliggande strömmens position inte matchar den interna buffertens position. Om du vill återställa den interna bufferten DiscardBufferedData anropar du metoden, men den här metoden försämrar prestandan och bör bara anropas när det är absolut nödvändigt.
En lista över vanliga I/O-uppgifter finns i Vanliga I/O-uppgifter.
Se även
Gäller för
Read(Span<Char>)
- Källa:
- StreamReader.cs
- Källa:
- StreamReader.cs
- Källa:
- StreamReader.cs
- Källa:
- StreamReader.cs
- Källa:
- StreamReader.cs
Läser tecknen från den aktuella strömmen till ett intervall.
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
Parametrar
När den här metoden returnerar, innehåller det angivna intervallet med tecken som ersatts av de tecken som lästs från den aktuella källan.
Returer
Antalet tecken som har lästs, eller 0 om det i slutet av dataströmmen och inga data lästes. Talet är mindre än eller lika med buffer längden, beroende på om data är tillgängliga i dataströmmen.
Undantag
Antalet tecken som läss från strömmen är större än buffer längden.
buffer är null.
Gäller för
Read(Char[], Int32, Int32)
- Källa:
- StreamReader.cs
- Källa:
- StreamReader.cs
- Källa:
- StreamReader.cs
- Källa:
- StreamReader.cs
- Källa:
- StreamReader.cs
Läser ett angivet maximalt antal tecken från den aktuella strömmen till en buffert, med början vid det angivna indexet.
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
Parametrar
- buffer
- Char[]
När den här metoden returneras innehåller den angivna teckenmatrisen med värdena mellan index och (index + count - 1) ersatta av tecknen som lästs från den aktuella källan.
- index
- Int32
Indexet buffer för när du ska börja skriva.
- count
- Int32
Det maximala antalet tecken som ska läsas.
Returer
Antalet tecken som har lästs, eller 0 om det i slutet av dataströmmen och inga data lästes. Talet är mindre än eller lika med parametern count , beroende på om data är tillgängliga i dataströmmen.
Undantag
Buffertlängden minus index är mindre än count.
buffer är null.
index eller count är negativ.
Ett I/O-fel inträffar, till exempel att strömmen stängs.
Exempel
Följande kodexempel läser fem tecken åt gången tills slutet av filen har nåtts.
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
Kommentarer
Den här metoden åsidosätter TextReader.Read.
Den här metoden returnerar ett heltal så att det kan returnera 0 om strömmens slut har nåtts.
När du använder Read metoden är det mer effektivt att använda en buffert som har samma storlek som strömmens interna buffert, där den interna bufferten är inställd på önskad blockstorlek och alltid läser mindre än blockstorleken. Om storleken på den interna bufferten var ospecificerad när strömmen konstruerades är standardstorleken 4 kilobyte (4 096 byte). Om du ändrar positionen för den underliggande strömmen efter att ha läst in data i bufferten kanske den underliggande strömmens position inte matchar den interna buffertens position. Om du vill återställa den interna bufferten DiscardBufferedData anropar du metoden, men den här metoden försämrar prestandan och bör bara anropas när det är absolut nödvändigt.
Den här metoden returneras efter att antingen antalet tecken som anges av parametern count har lästs eller så har slutet av filen nåtts.
ReadBlock är en blockerande version av Read.
En lista över vanliga I/O-uppgifter finns i Vanliga I/O-uppgifter.