StreamReader.Read Yöntem

Tanım

Giriş akışından sonraki karakteri veya sonraki karakter kümesini okur.

Aşırı Yüklemeler

Read()

Giriş akışından sonraki karakteri okur ve karakter konumunu bir karakter ilerletir.

Read(Span<Char>)

Geçerli akıştan karakterleri bir yayılma alanına okur.

Read(Char[], Int32, Int32)

Belirtilen dizinden başlayarak geçerli akıştan bir arabelleğe belirtilen karakter sayısı üst sınırını okur.

Read()

Kaynak:
StreamReader.cs
Kaynak:
StreamReader.cs
Kaynak:
StreamReader.cs

Giriş akışından sonraki karakteri okur ve karakter konumunu bir karakter ilerletir.

C#
public override int Read ();

Döndürülenler

Bir nesne olarak temsil edilen giriş akışından sonraki Int32 karakter veya başka karakter yoksa -1.

Özel durumlar

Bir G/Ç hatası oluşur.

Örnekler

Aşağıdaki kod örneği, yönteminin Read basit bir kullanımını gösterir.

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

Aşağıdaki kod örneği, yöntem aşırı yüklemesini Read() kullanarak tek bir karakteri okumayı ve ASCII tamsayı çıkışını ondalık ve onaltılık olarak biçimlendirmeyi gösterir.

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

Açıklamalar

Bu yöntem geçersiz kılar TextReader.Read.

Bu yöntem, akışın sonuna ulaşıldıysa -1 döndürebilmesi için bir tamsayı döndürür. Verileri arabelleğe okuduktan sonra temel alınan akışın konumunu işlerseniz, temel alınan akışın konumu iç arabelleğin konumuyla eşleşmeyebilir. İç arabelleği sıfırlamak için yöntemini çağırın DiscardBufferedData ; ancak bu yöntem performansı yavaşlatıyor ve yalnızca kesinlikle gerekli olduğunda çağrılmalıdır.

Yaygın G/Ç görevlerinin listesi için bkz. Ortak G/Ç Görevleri.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Read(Span<Char>)

Kaynak:
StreamReader.cs
Kaynak:
StreamReader.cs
Kaynak:
StreamReader.cs

Geçerli akıştan karakterleri bir yayılma alanına okur.

C#
public override int Read (Span<char> buffer);

Parametreler

buffer
Span<Char>

Bu yöntem döndürdüğünde, geçerli kaynaktan okunan karakterlerle değiştirilen belirtilen karakter aralığını içerir.

Döndürülenler

Okunan karakter sayısı veya akışın sonunda veri okunmadıysa 0. Verilerin akış içinde kullanılabilir olup olmadığına bağlı olarak, sayı uzunluk değerinden küçük veya buna eşit buffer olacaktır.

Özel durumlar

Akıştan okunan karakter sayısı, uzunluk değerinden buffer daha büyük.

buffer, null değeridir.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

Read(Char[], Int32, Int32)

Kaynak:
StreamReader.cs
Kaynak:
StreamReader.cs
Kaynak:
StreamReader.cs

Belirtilen dizinden başlayarak geçerli akıştan bir arabelleğe belirtilen karakter sayısı üst sınırını okur.

C#
public override int Read (char[] buffer, int index, int count);

Parametreler

buffer
Char[]

Bu yöntem döndürdüğünde, ve (index + count - 1) arasındaki index değerlerin geçerli kaynaktan okunan karakterlerle değiştirdiği belirtilen karakter dizisini içerir.

index
Int32

Yazmaya başlayabileceğiniz dizini buffer .

count
Int32

Okunacak en fazla karakter sayısı.

Döndürülenler

Okunan karakter sayısı veya akışın sonunda veri okunmadıysa 0. Verilerin akış içinde kullanılabilir olup olmadığına bağlı olarak sayı parametresinden count küçük veya buna eşit olacaktır.

Özel durumlar

Arabellek uzunluğu eksi index değeri değerinden countküçüktür.

buffer, null değeridir.

index veya count negatiftir.

Akış kapatılır gibi bir G/Ç hatası oluşur.

Örnekler

Aşağıdaki kod örneği, dosyanın sonuna ulaşılana kadar bir kerede beş karakter okur.

C#
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.Read(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());
        }
    }
}

Açıklamalar

Bu yöntem geçersiz kılar TextReader.Read.

Bu yöntem, akışın sonuna ulaşıldıysa 0 döndürebilmesi için bir tamsayı döndürür.

yöntemi kullanılırken Read , iç arabelleğin istediğiniz blok boyutuna ayarlandığı akışın iç arabelleğiyle aynı boyutta bir arabellek kullanmak ve her zaman blok boyutundan daha az okumak daha verimlidir. Akış oluşturulduğunda iç arabelleğin boyutu belirtilmemişse, varsayılan boyutu 4 kilobayttır (4096 bayt). Verileri arabelleğe okuduktan sonra temel alınan akışın konumunu işlerseniz, temel alınan akışın konumu iç arabelleğin konumuyla eşleşmeyebilir. İç arabelleği sıfırlamak için yöntemini çağırın DiscardBufferedData ; ancak bu yöntem performansı yavaşlatıyor ve yalnızca kesinlikle gerekli olduğunda çağrılmalıdır.

Bu yöntem, parametresi tarafından count belirtilen karakter sayısı okunduktan veya dosyanın sonuna ulaşıldıktan sonra döndürür. ReadBlock , öğesinin engelleyici bir sürümüdür Read.

Yaygın G/Ç görevlerinin listesi için bkz. Ortak G/Ç Görevleri.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0