StreamReader.DiscardBufferedData Metode

Definisi

Menghapus buffer internal.

public:
 void DiscardBufferedData();
public void DiscardBufferedData ();
member this.DiscardBufferedData : unit -> unit
Public Sub DiscardBufferedData ()

Contoh

Contoh berikut menunjukkan skenario di mana DiscardBufferedData metode harus dipanggil untuk menyinkronkan buffer internal dan aliran yang mendasarinya. File dalam contoh digunakan untuk mengilustrasikan posisi dan terdiri dari teks abcdefghijklmnopqrstuvwxyz. Dengan memanggil DiscardBufferedData setelah data dibaca, contohnya berfungsi seperti yang diharapkan. Setelah 15 karakter pertama dibaca, posisi diatur ulang ke nilai offset 2 dan semua karakter yang tersisa dibaca. Jika Anda menghapus panggilan ke DiscardBufferedData, contohnya tidak berfungsi seperti yang diharapkan. 15 karakter pertama dibaca, tetapi hanya posisi aliran yang mendasar yang direset. Buffer StreamReader internal objek masih pada karakter ke-16. Oleh karena itu, ReadToEnd mengembalikan semua karakter dalam buffer ditambah karakter dalam aliran yang mendasar mulai dari posisi reset.

using System;
using System.IO;

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

        using (StreamReader sr = new StreamReader(path))
        {
            char[] c = null;

            c = new char[15];
            sr.Read(c, 0, c.Length);
            Console.WriteLine("first 15 characters:");
            Console.WriteLine(c);
            // writes - "abcdefghijklmno"

            sr.DiscardBufferedData();
            sr.BaseStream.Seek(2, SeekOrigin.Begin);
            Console.WriteLine("\nBack to offset 2 and read to end: ");
            Console.WriteLine(sr.ReadToEnd());
            // writes - "cdefghijklmnopqrstuvwxyz"
            // without DiscardBufferedData, writes - "pqrstuvwxyzcdefghijklmnopqrstuvwxyz"
        }
    }
}
Imports System.IO

Module Module1

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

        Dim sr As StreamReader = New StreamReader(path)
        Dim c(14) As Char

        sr.Read(c, 0, c.Length)
        Console.WriteLine("first 15 characters:")
        Console.WriteLine(c)
        ' writes - "abcdefghijklmno"

        sr.DiscardBufferedData()
        sr.BaseStream.Seek(2, SeekOrigin.Begin)
        Console.WriteLine(Environment.NewLine & "Back to offset 2 and read to end: ")
        Console.WriteLine(sr.ReadToEnd())
        ' writes - "cdefghijklmnopqrstuvwxyz"
        ' without DiscardBufferedData, writes - "pqrstuvwxyzcdefghijklmnopqrstuvwxyz"
        sr.Close()
    End Sub

End Module

Keterangan

DiscardBufferedData Gunakan metode untuk mengatur ulang buffer internal untuk StreamReader objek . Anda perlu memanggil metode ini hanya ketika posisi buffer internal dan BaseStream tidak cocok. Posisi ini dapat menjadi tidak cocok ketika Anda membaca data ke dalam buffer dan kemudian mencari posisi baru di aliran yang mendasar. Metode ini memperlambat performa dan harus digunakan hanya ketika benar-benar diperlukan, seperti ketika Anda ingin membaca sebagian konten StreamReader objek lebih dari sekali.

Untuk daftar tugas I/O umum, lihat Tugas I/O Umum.

Berlaku untuk

Lihat juga