Đọc ghi file (Phần 1) - Hướng dẫn xử lý tập tin trong Java

I.Khái niệm về I/O Stream

=> Tất cả các xử lý nhập / xuất dữ liệu đều được gọi chung là luồng nhập xuất (I/O Stream)

+ Nhập dữ liệu vào từ bàn phím.
+ Lấy dữ liệu từ một chương trình khác.
+ Ghi dữ liệu ra đĩa
+ Xuất dữ liệu ra màn hình , máy in...

=> Luồng hỗ trợ nhiều kiểu dữ liệu khác nhau.

=> Một số luồng chỉ truyền dữ liệu , một số luồng có thể xử lý và chuyển đổi dữ liệu.





 1. Luồng Byte.

=> Luồng Byte là luồng đọc ghi nhị phân (máy tính chỉ hiểu dữ liệu dạng nhị phân 0 1) hỗ trợ việc xuất nhập dữ liệu trên byte , thường được dùng khi đọc ghi dữ liệu nhị phân.

=> Luồng này ghi từng byte

=> Tất cả các lớp xử lý luồng byte đều là lớp con của InputStream(đọc) và OutputStream(ghi)



Thực hành đọc ghi :

+ B1 : Để đọc ghi file ta dùng lớp FileInputStream là lớp con của InputStream => Lớp này được hỗ trợ sẵn bởi Java.

+ B2 : Tạo đối tượng của lớp FileInputStream và truyền vào đường dẫn file.

+ B3 : gọi hàm read() của lớp FIS thông qua đối tượng vừa tạo mỗi lần gọi hàm read() sẽ đọc 1 byte(1 kí tự) đến khi hết kí tứ hàm read() sẽ trả về -1.




=> Thực hành ghi vào file

+ Tạo đối tượng của lớp FileOutPutStream và truyền vào đường dẫn file.

+ sử dụng hàm charAT trong java trả về ký tự tại chỉ mục đã xác định của String . Chỉ mục bắt đầu từ Zero.





=> Nhược điểm của Byte Stream là không thể đọc hay ghi được kí tự UNICODE vì mỗi kí tự dạng UNI sẽ tính 2 byte mà luồng Byte chỉ đọc từng byte nên sẽ bị mất kí tự(Chính xác là luồng byte sẽ cắt ký tự này ra trong khi phải đọc 2 byte đồng thời thì nó chỉ đọc 1 byte) => Trong trường hợp này ta dùng Character Stream.

=> Luồng Byte cái gì nó cũng đọc được hết và đọc theo từng dòng.

2. Character Stream(Luồng ký tự)

+ Luồng kí tự (Character Stream) hỗ trợ đọc ghi luồng ký tự Unicode.
+ Tất cả các lớp luồng luồng ký tư đều là lớp con của Reader và Writer.




Demo code :


=> Để cho ra kết quả chính xác nhất bạn nên tự tạo file vào ghi vào bằng IDE  ko nên ghi vào bằng tay.

3 Ưu nhược điểm.

Hai cách đọc ghi file bên trên mình giới thiệu là 2 cách đọc ghi file cơ bản trong Java
=> Dùng 2 cách này sẽ gây :
+ Không hiệu quả.
+ Tốn chi phí truy xuất đĩa cứng
+ Dễ tổn hại tập tin và đĩa cứng
Do mỗi lần đọc luồng nhị phân hay luồng kí tự chỉ lấy 1 byte mà chương trình lấy 512 byte gây ra lãng phí bộ nhớ làm chậm chương trình.

=> Để khắc phục những nhược điểm trên trong phiên bản Java mới đã sử dụng vùng đệm trong đọc ghi dữ liệu
 + Hiệu quả và an toàn hơn cho các thao tác đọc ghi
+ Bản chất nó vẫn là đọc ghi file ở luồng nhị phân.

3.Sử dụng vùng đệm để đọc ghi dữ liệu.



Chuyển từ không sử dụng vùng đệ sang sử dụng vùng đệm : dùng bufferd stream
+ BufferedInputStream.
+ BufferedOutputStream.
+ BufferedReader
+ BufferedWriter.


Demo code :




4.Đọc ghi dữ liệu với Data Stream.

Thường được sử dụng để đọc ghi file dạng  kí tự int , double , string... trong 8 kiểu primitive




Kết quả :
=> Chương trình báo lỗi EOF do hết file để đọc bạn có thể xử lý bằng try/catch.
Link code  mẫu : link

Nhận xét

Bài đăng phổ biến