Tại sao một số luồng nhất định cần được xả (FileOutputStream
và luồng từ Ổ cắm) trong khi luồng đầu ra tiêu chuẩn thì không?Khi nào/tại sao nên gọi System.out.flush() trong Java
Mỗi khi ai đó sử dụng các đối tượng System.out
PrintStream
, có thể là trong khi kêu gọi println()
hay write()
, họ không bao giờ tuôn dòng. Tuy nhiên, các lập trình viên khác thường gọi số flush()
a PrintStream
/PrintWriter
với các luồng khác.
Gần đây tôi đã hỏi câu hỏi này cho một số lập trình viên và một số tin rằng có một số xử lý nền trong Java để tự động tuôn ra luồng System.out
nhưng tôi không thể tìm thấy bất kỳ tài liệu nào về điều đó.
Điều gì đó khiến tôi tự hỏi liệu đơn giản là gọi System.out.println()
là nền tảng độc lập vì một số hệ thống có thể cần bạn xóa luồng.
chỉ hợp lệ 'nếu đúng', nhưng phải không? Tôi không thể tìm thấy bất kỳ tài liệu nào về giá trị của autoFlush cho System.out ... –
@Carlos, tùy thuộc vào hệ thống khởi động JVM và khởi chạy lớp chính 'System.out' và' System.err' là gì bị ràng buộc và cách chúng tuôn ra. Khi bạn sử dụng nhị phân 'java' để khởi động một lớp' System.out' được khởi tạo thành một cái gì đó như 'PrintStream mới (FileOutputStream mới (FileDescriptor.out), true, System.getProperty (" file.encoding "))' nhưng khác Các JVM khác nhau. Rõ ràng là một JVM nhúng applet làm một cái gì đó khác nhau. –
@MikeSamuel, Vì vậy, nó có nghĩa là chúng tôi vẫn * cần * để tuôn ra anyway vì hành vi autoflush không ** đảm bảo ** bởi các thông số kỹ thuật? – Pacerier