Ghi file với FileOutputStream trong java

FileOutStream là một luồng dữ liệu đầu ra dùng để ghi dữ liệu và File hoặc FileDescriptor. FileOutputStream được sử dụng để ghi các luồng dữ liệu thô dưới dạng byte vì vậy sẽ tốt cho trường hợp các dữ liệu không phải dạng text như là pdf, excel, image etc.

Khởi tạo FileOutputStream

FileOutputStream cung cấp các method được ghi dữ liệu dưới dạng byte nhưng trước tiên chúng ta cùng một instance của nó, dưới đây là các cách khởi tạo FileOutputStream.

FileOutputStream(File file) – Khởi tạo FileOutputStream từ một instance file. Nếu file không tồn tại sẽ được tại mới. Nếu file đã tồn tại dữ liệu được ghi từ FileOutputStream sẽ ghi đè lên nội dung trước đó.

FileOutStream(File file, boolean append) – Khởi tạo FileOutoutStream từ file truyền vào, nếu append là true dữ liệu ghi từ FileOutputStream sẽ ghi vào cuối file, ngược lại dữ liệu sẽ được ghi đè lên.

FileOutputStream(FileDescriptor fdObj) – Khởi tạo FileOutputStream từ một instance FileDescriptor. Nếu file không tồn tại sẽ được tại mới. Nếu file đã tồn tại dữ liệu được ghi từ FileOutputStream sẽ ghi đè lên nội dung trước đó

FileOutputStream(String pathName) – Khởi tạo FileOutputStream từ đường dẫn. Cách hoạt động giống với FileOutputStream(File file).

FileOutputStream(String pathName, boolean append) – Khởi tạo FileOutputStream từ đường dẫn. Cách hoạt động giống với FileOutputStream(File file, booleab append).

Các method trong FileOutputStream

close()

Đóng tất cả các kết nối của FileOutputStream với các tài nguyên nó kết nối.

finalize(()

Đảm bảo rằng close() được gọi và không còn kết nối nào giữa FileOutputStream với các tài nguyên khác.

getChanel() 

Trả về FileChannel object duy nhất liên kết với FileOutputStream.

getFD()

Trả về FileDescriptor object của FileOutputStream.

write(int b)

Ghi một byte b xuống OutputStream.

write(byte[] b)

Ghi một mảng byte b xuống OutputStream.

write(byte[] b, int off, int len)

Ghi một mảng byte b xuống OutputStream bắt đầu tại vị trí off và ghi tối đa len byte.

Ghi dữ liệu vào file sử dụng FileOutputStream

Ví dụ finalize

finalize() dùng để đảm bảo rằng tất các các kết nối đến FileOutStream đã được đóng. Nếu không nó thể ném ra một exception 

Output:

java.io.IOException: Stream Closed
at java.io.FileOutputStream.write(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:290)
at FileOutputStreamFinalizeExample.main(Main.java:23)

Chúng ta chưa gọi close() để đóng kết nối mà đã gọi finalize() nên nhận được exception như trên. 

Nguồn tham khảo:

Java FileOutputStream

Leave a Reply

Your email address will not be published. Required fields are marked *