StreamReader.DiscardBufferedData Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.