Nếu bạn đọc tài liệu mở rộng trên oracle
http://download.oracle.com/javase/1.4.2/docs/api/java/io/OutputStream.html#flush()
Flushes output stream này và buộc bất kỳ byte đầu ra đệm được viết ra. Các hợp đồng chung của tuôn ra là gọi nó là một dấu hiệu cho thấy, nếu bất kỳ byte trước đó bằng văn bản đã được đệm bởi việc thực hiện các dòng đầu ra, các byte như vậy ngay lập tức nên được ghi vào đích dự định của họ.
Phương thức xả của OutputStream không làm gì cả.
phương tiện, phương pháp riêng của mình không có gì, và nó là trừu tượng, vì vậy bất kỳ lớp cơ bản có thể thực hiện phiên bản riêng của mình suối đỏ bừng và buộc họ phải viết (không phải chờ đợi trong ghi hàng đợi)
Nhưng dù sao, như Guillaume đã chỉ ra, thực tiễn tốt là hãy gọi nó. Nếu sau này, bạn thay thế luồng của mình bằng một triển khai khác sử dụng nó, sau đó bạn sẽ rất tiếc.
Tùy thuộc vào hệ điều hành, lệnh tuôn ra() không làm gì hơn là buộc dữ liệu được ghi vào hệ điều hành.
và
flush() không có gì trên FileOutputStream. Nó chỉ hữu ích trên các luồng đệm.
và từ javadoc của close()
, chỉ cần lưu ý bạn không phải tuôn ra luồng nếu bạn đóng ngay sau đó.
Đóng luồng, xả trước tiên. Khi một luồng đã được đóng lại, các lời gọi viết thêm() hoặc flush() sẽ gây ra một lỗi IOException. Tuy nhiên, đóng luồng đã đóng trước đó sẽ không có hiệu lực.
liên quan:
FileOutputStream.close is really slow when writing large file
flush in java.io.FileWriter
Nhưng liệu InputStream và OutputStream có sử dụng của nó? hoặc là vô nghĩa để gọi? – Warpzit
Thật vô nghĩa khi không sử dụng các luồng đệm mà tôi nghĩ. Không đệm dòng nên được ghi vào asap đích tùy thuộc vào hệ điều hành và HW cơ bản –
Vì vậy, fileoutputstream không sử dụng nó và cùng đi với inputstream? – Warpzit