2016-11-05 3 views
-1

Wenn man einen gepufferten Stream verwendet, sagen wir .Java Was passiert, wenn wir einen IO-Stream löschen

BufferedOutputStream bf = new BufferedOutputStream(new FileOutputStream(fileName)); 

Nehmen wir einen 32 Byte in den Stream schreibt, und ruft die Methode flush() danach. Laut anderen StackOverflow-Antworten werden die 32 Bytes in den OS-Speicher übergeben/kopiert.

Nun, wenn das stimmt, ist das dann nicht abhängig vom Betriebssystem? z.B. Wenn wir dies unter Windows ausführen, verfügt es auch über den Systemcache für die Verwaltung von Dateidaten. Müssen wir nicht auch warten, bis das Betriebssystem diese Daten in der Datei speichert, und das ist der Punkt, an dem diese 32 Bytes tatsächlich auf die Festplatte geschrieben werden? Oder liege ich hier falsch?

Antwort

0

Zum Beispiel schreibt man 32 Bytes in den Stream und ruft danach die flush() Methode auf. Laut anderen StackOverflow-Antworten werden die 32 Bytes in den OS-Speicher übergeben/kopiert.

Das Wort, das Sie suchen, ist "geschrieben", durch die normale API write() oder deren Äquivalent.

Nun, wenn das stimmt, ist das dann nicht abhängig vom Betriebssystem? z.B. Wenn wir dies unter Windows ausführen, verfügt es auch über den Systemcache für die Verwaltung von Dateidaten. Müssen wir nicht auch warten, bis das Betriebssystem diese Daten in der Datei speichert, und das ist der Punkt, an dem diese 32 Bytes tatsächlich auf die Festplatte geschrieben werden? Oder liege ich hier falsch?

Sie liegen falsch. Alles, was passiert, ist die write().

+0

Aha, so auf Flush, Daten werden in OS-Speicher geschrieben, und das Betriebssystem wird benachrichtigt, um diese Daten auf die Festplatte schreiben? –

+0

Welcher Teil von 'alles, was passiert, ist das 'write()'' verstehst du nicht? – EJP

+0

Ok, ich werde die Frage umformulieren, was bedeutet Schreiben in Java? Schreiben Sie direkt vom JVM-Speicherplatz auf die Festplatte oder? Das heißt, die JVM schreibt das Schreiben auf die Festplatte? –

Verwandte Themen