StreamReader.DiscardBufferedData Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Cancella il buffer interno.
public:
void DiscardBufferedData();
public void DiscardBufferedData ();
member this.DiscardBufferedData : unit -> unit
Public Sub DiscardBufferedData ()
Esempio
Nell'esempio seguente viene illustrato uno scenario in cui è necessario chiamare il DiscardBufferedData metodo per sincronizzare il buffer interno e il flusso sottostante. Il file nell'esempio viene usato per illustrare la posizione ed è costituito dal testo abcdefghijklmnopqrstuvwxyz
. DiscardBufferedData Chiamando dopo la lettura dei dati, l'esempio funziona come previsto. Dopo aver letto i primi 15 caratteri, la posizione viene reimpostata sul valore di offset 2 e tutti i caratteri rimanenti vengono letti. Se si rimuove la chiamata a DiscardBufferedData, l'esempio non funziona come previsto. I primi 15 caratteri vengono letti, ma viene reimpostata solo la posizione del flusso sottostante. Il buffer interno dell'oggetto StreamReader è ancora sul 16° carattere. Restituisce ReadToEnd pertanto tutti i caratteri nel buffer e i caratteri nel flusso sottostante a partire dalla posizione di reimpostazione.
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
Commenti
Utilizzare il DiscardBufferedData metodo per reimpostare il buffer interno per l'oggetto StreamReader . È necessario chiamare questo metodo solo quando la posizione del buffer interno e l'oggetto BaseStream non corrispondono. Queste posizioni possono diventare non corrispondenti quando si leggono i dati nel buffer e quindi si cerca una nuova posizione nel flusso sottostante. Questo metodo rallenta le prestazioni e deve essere usato solo quando è assolutamente necessario, ad esempio quando si desidera leggere una parte del contenuto di un StreamReader oggetto più volte.
Per un elenco delle attività di I/O comuni, vedere Attività di I/O comuni.