Was ist der Unterschied zwischen FileStream.Flush() und FileStream.Flush(True)?
MSDN sagt, dass FileStream.Flush(True)
"löscht auch alle zwischen-Datei Puffer"..
Was bedeutet "alle temporären Datei-Puffer" genau meinen?
- Hinweis: Flush(true) ist gebrochen unter bestimmten Bedingungen pro MS Fehlerbericht connect.microsoft.com/VisualStudio/feedback/details/634385/.... MS behoben, es, aber nicht sagen was .NET-version ist es behoben.
- Jedes Wort auf die was-version .NET dieser bug behoben wird ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es bewirkt, dass die Datei Daten, die im Zwischenspeicher gespeichert in der Datei system cache auf die Festplatte geschrieben werden. Dass Daten, die normalerweise träge geschrieben, basierend auf der position des disk-schreib-Kopf. Mit einem gigabyte Cache Daten technisch möglich ist, so kann es durchaus eine Weile dauern. Wenn dies für Sie wichtig ist, dann erwägen, die
FileOptions.WriteThrough
option statt. Es deaktiviert den Schreibcache komplett. Dies kann sehr teuer sein; du wirst entdecken, wie man langsame Festplatten wirklich sind.Beim Aufruf
Flush()
oderFlush(false)
,FileStream
"Kopien der Datei alle Daten, die zuvor geschrieben, um den Puffer und den Puffer löscht (außer die encoder-Zustand)". Puffer bedeutet hier, dass interne PufferFileStream
Klasse. Und kopieren der Datei ist nicht das schreiben von Daten auf Discs. Es ist nur die übergabe von Daten an OS.Aber, E /a-Vorgänge in Windows OS sind ebenfalls gepuffert - das schreiben von Daten auf die Festplatte verschoben werden könnten, bis die Anlage fertig sein wird, es zu tun. Also, löschen alle zwischengeschalteten Puffer erzwingt das schreiben der gepufferten Daten auf eine Disk. Puffer hier mittels Windows interner Puffer [Datei system cache].
BTW, wenn Sie die Datei schließen, werden alle gepufferten Daten geschrieben werden, auf die Disk automatisch. So müssen Sie das Zeug nur, wenn Sie müssen Daten geleert werden, bevor der Datei-handle wird geschlossen.
FileStream
es dauert Byte - Zeichen nicht - und überträgt diese von/auf Festplatte. Waren Sie vielleicht denkenStreamWriter
?File.AppendAllText()
hat eine Dauer in der selben Größenordnung wiefileStream.Write(); fileStream.Flush(false);
, in der Erwägung, dassfileStream.Write(); fileStream.Flush(true);
ist um eine Größenordnung langsamer. DaFile.AppendAllText()
sofort schließt die Datei wieder und nimmt bei weitem nicht so lange wiefileStream.Flush(true)
können wir davon ausgehen, dass die Datei schließen, schreibt die gepufferten Daten in die OS, anstatt zwingen, den OS zu schreiben, auf die Festplatte zu speichern.Dadurch wird eine zusätzliche Aufruf von flush den Puffer in Datei: