Sdílet prostřednictvím


FileStream.Flush Metoda

Definice

Vymaže vyrovnávací paměti pro tento datový proud a způsobí zápis všech dat do vyrovnávací paměti do souboru.

Přetížení

Flush()

Vymaže vyrovnávací paměti pro tento datový proud a způsobí zápis všech dat do vyrovnávací paměti do souboru.

Flush(Boolean)

Vymaže vyrovnávací paměti pro tento datový proud a způsobí zápis všech dat do vyrovnávací paměti do souboru a také vymaže všechny přechodné vyrovnávací paměti souborů.

Flush()

Zdroj:
FileStream.cs
Zdroj:
FileStream.cs
Zdroj:
FileStream.cs

Vymaže vyrovnávací paměti pro tento datový proud a způsobí zápis všech dat do vyrovnávací paměti do souboru.

public:
 override void Flush();
public override void Flush ();
override this.Flush : unit -> unit
Public Overrides Sub Flush ()

Výjimky

Došlo k vstupně-výstupní chybě.

Datový proud se zavře.

Příklady

Tento příklad kódu je součástí většího příkladu pro metodu Lock .

// Update the file.
case 'W':
   try
   {
      fileStream->Seek( textLength, SeekOrigin::Begin );
      fileStream->Read( readText, textLength - 1, byteCount );
      tempString = gcnew String( uniEncoding->GetChars( readText, textLength - 1, byteCount ) );
      recordNumber = Int32::Parse( tempString ) + 1;
      fileStream->Seek( textLength, SeekOrigin::Begin );
      fileStream->Write( uniEncoding->GetBytes( recordNumber.ToString() ), 0, byteCount );
      fileStream->Flush();
      Console::WriteLine( "Record has been updated." );
   }
// Update the file.
case 'W':
    try
    {
        fileStream.Seek(textLength,
            SeekOrigin.Begin);
        fileStream.Read(
            readText, textLength - 1, byteCount);
        tempString = new String(
            uniEncoding.GetChars(
            readText, textLength - 1, byteCount));
        recordNumber = int.Parse(tempString) + 1;
        fileStream.Seek(
            textLength, SeekOrigin.Begin);
        fileStream.Write(uniEncoding.GetBytes(
            recordNumber.ToString()),
            0, byteCount);
        fileStream.Flush();
        Console.WriteLine(
            "Record has been updated.");
    }
| 'W' ->
    // Update the file.
    try

        fileStream.Seek(textLength, SeekOrigin.Begin) |> ignore
        fileStream.Read(readText, textLength - 1, byteCount) |> ignore
        tempString <- String(uniEncoding.GetChars readText, textLength - 1, byteCount)
        recordNumber <- Int32.Parse tempString + 1
        fileStream.Seek(textLength, SeekOrigin.Begin) |> ignore
        fileStream.Write(string recordNumber |> uniEncoding.GetBytes, 0, byteCount)
        fileStream.Flush()
        printfn "Record has been updated."
' Update the file.
Case "W"C
    Try
        aFileStream.Seek(textLength, _
            SeekOrigin.Begin)
        aFileStream.Read( _
            readText, textLength - 1, byteCount)
        tempString = New String( _
            uniEncoding.GetChars( _
            readText, textLength - 1, byteCount))
        recordNumber = _
            Integer.Parse(tempString) + 1
        aFileStream.Seek( _
            textLength, SeekOrigin.Begin)
        aFileStream.Write(uniEncoding.GetBytes( _
            recordNumber.ToString()), 0, byteCount)
        aFileStream.Flush()
        Console.WriteLine( _
            "Record has been updated.")

Poznámky

Tato metoda přepíše Stream.Flush.

Při volání FileStream.Flush metody se vyprázdní také vstupně-výstupní vyrovnávací paměť operačního systému.

Kodér datového proudu není vyprázdněný, pokud objekt explicitně nezavoláte Flush nebo nevyřadíte. Nastavení StreamWriter.AutoFlush na znamená true , že data budou vyprázdněna z vyrovnávací paměti do datového proudu, ale stav kodéru se nevyprázdní. To umožňuje kodéru zachovat svůj stav (částečné znaky), aby mohl správně zakódovat další blok znaků. Tento scénář má vliv na UTF8 a UTF7, kde určité znaky lze zakódovat pouze poté, co kodér přijme sousední znak nebo znaky.

Vzhledem k tomu, že vyrovnávací paměť lze použít pro čtení nebo zápis, Flush() provádí následující dvě funkce:

  • Všechna data dříve zapsaná do vyrovnávací paměti se zkopírují do souboru a vyrovnávací paměť se vymaže s výjimkou stavu kodéru.

  • true Pokud BufferedStream.CanSeek jsou a data byla dříve zkopírována ze souboru do vyrovnávací paměti pro čtení, aktuální pozice v souboru se sníží o počet nepřečtených bajtů ve vyrovnávací paměti. Vyrovnávací paměť se pak vymaže.

Flush(Boolean) Přetížení metody použijte, pokud chcete zajistit, aby se na disk zapisovala všechna data ve vyrovnávací paměti v vyrovnávací paměti zprostředkujících souborů.

Viz také

Platí pro

Flush(Boolean)

Zdroj:
FileStream.cs
Zdroj:
FileStream.cs
Zdroj:
FileStream.cs

Vymaže vyrovnávací paměti pro tento datový proud a způsobí zápis všech dat do vyrovnávací paměti do souboru a také vymaže všechny přechodné vyrovnávací paměti souborů.

public:
 virtual void Flush(bool flushToDisk);
public virtual void Flush (bool flushToDisk);
override this.Flush : bool -> unit
Public Overridable Sub Flush (flushToDisk As Boolean)

Parametry

flushToDisk
Boolean

truevyprázdnit všechny vyrovnávací paměti mezilehlého souboru; v opačném případě . false

Poznámky

Toto přetížení použijte, pokud chcete zajistit, aby se na disk zapisovala všechna data ve vyrovnávací paměti v vyrovnávací paměti zprostředkujících souborů.

Při volání Flush metody se vyprázdní také vstupně-výstupní vyrovnávací paměť operačního systému.

Viz také

Platí pro