Perché alcuni flussi devono essere scaricati (FileOutputStream
e flussi da Socket) mentre il flusso di output standard no?Quando/perché chiamare System.out.flush() in Java
Ogni volta che qualcuno utilizza l'oggetto System.out
PrintStream
, sia durante la chiamata o println()
write()
, non hanno mai sciacquare il torrente. Tuttavia, altri programmatori chiamano abitualmente flush()
a PrintStream
/PrintWriter
con altri flussi.
Recentemente ho fatto questa domanda a diversi programmatori e alcuni credono che ci sia un po 'di gestione in background in Java per lo scarico automatico del flusso System.out
ma non riesco a trovare alcuna documentazione al riguardo.
Qualcosa di simile mi fa meravigliare se chiamare semplicemente System.out.println()
sia indipendente dalla piattaforma poiché alcuni sistemi potrebbero aver bisogno di scaricare lo stream.
valido solo se è vero, ma è vero? Non sono riuscito a trovare alcuna documentazione sul valore di autoFlush per System.out ... –
@Carlos, Spetta al sistema che avvia la JVM e lancia la classe principale quali 'System.out' e' System.err' sono legato a come arrossiscono. Quando si usa il file 'java' per avviare una classe' System.out' viene inizializzato su qualcosa come 'new PrintStream (nuovo FileOutputStream (FileDescriptor.out), vero, System.getProperty (" file.encoding "))' ma altro Le JVM differiscono. Ovviamente una JVM che incorpora le applet fa qualcosa di diverso. –
@MikeSamuel, Quindi vuol dire che abbiamo * bisogno * di svuotare comunque perché il comportamento dell'autoflush non è ** garantito ** dalle specifiche? – Pacerier