Qual è la differenza di funzionalità tra StreamWriter.Flush()
e StreamWriter.Close()
?Qual è la differenza tra StreamWriter.Flush() e StreamWriter.Close()?
Quando i miei dati non venivano scritti correttamente in un file, ho aggiunto sia Flush()
e Close()
alla fine del mio codice. Tuttavia, mi sono reso conto che aggiungere oFlush()
o Close()
consentiva la corretta scrittura dei dati.
Non sono stato in grado di capire esattamente cosa fanno ciascuno di questi metodi quando leggo i documenti MSDN; Ho solo capito che l'uno o l'altro è necessario per garantire che i dati siano scritti correttamente. Ogni ulteriore spiegazione sarebbe molto apprezzata.
Dove s
è una stringa da scrivere, ecco quello che il mio codice è simile al momento:
StreamWriter sw = File.CreateText("TextOutput.txt");
sw.Write(s);
sw.Flush();
sw.Close();
Sulla base del feedback dalle risposte, ho riscritto il mio codice in un using
block, che implementa IDisposable
e si occuperà automaticamente di scrivere il flusso sul file quando l'oggetto viene eliminato:
using (StreamWriter sw = File.CreateText("TextOutput.txt"))
{
sw.Write(s);
}
Questo perché Stream.Dispose chiama Close() – munissor
per essere chiaro, che incapsula un oggetto 'StreamWriter' in un blocco' using' (o 'try' /' catch') costringerà l'oggetto a essere chiuso? –
@ Ben - incapsulandolo in un try/catch non lo forzerà a chiudere. Incapsulare la tua chiamata '.Close()' in un blocco 'finally' o' using', e un blocco using è molto più conveniente. –