Mở file

Một phần của tài liệu Giáo trình lập trình hướng đối tượng c trường cao đẳng công nghiệp huế (Trang 160)

Để mở file trong chương trình bằng một đối tượng stream, chúng ta sử dụng hàm thành viên open(tên_file, chế_độ_mở).

Trong đó,

- tên_file: là tên của file mà chúng ta cần mở. Ta cần đảm bảo cung cấp đường dẫn chính xác đến tập tin này. Ta cũng cần lưu ý đường dẫn đến tập tin. Đường dẫn có thể là đường dẫn tuyệt đối hoặc tương đối. Nếu cung cấp đường dẫn tương đối, ta cần tuân thủ nguyên tắc như khi làm việc với tệp .cpp và .h như tôi đã trình bày ở trên.

C

+

+

- chế_độ_mở: là tham số tùy chọn, thường trong C++ nó có thể là các cờ hiệu sau đây:

Cờ hiệu Giải thích

ios::in Mở file để đọc.

ios::out Mở file để ghi.

ios::binary Mở file ở chế độ nhị phân (thường áp dụng cho các file mã hóa).

ios::ate Thiết lập vị trí khởi tạo tại vị trí cuối cùng của file. Nếu cờ hiệu này không thiết lập bất kì giá trị nào, vị trí khởi tạo sẽ đặt ở đầu file.

ios::app Mọi dữ liệu được ghi ra file sẽ tiến hành bổ sung vào cuối file (không ghi đè lên file). Cờ hiệu này chỉ có thể sử dụng trong tác vụ mở file để ghi.

ios::trunc Nếu một file được mở để ghi đã tồn tại, nó sẽ ghi đè lên nội dung cũ.

Các cờ hiệu này có thể được kết hợp bằng cách sử dụng toán tử dịch bit OR (|). Ví dụ, tôi muốn mở một file nhị phân example.bin để ghi dữ liệu và bổ sung dữ liệu ở cuối file này, tôi có thể viết như sau

ofstream myfile;

myfile.open(“example.bin”, ios::out|ios::app|ios::binary);

Thành viên open của các lớp ofstream, ifstream và fstream có tham số chế_độ_mở mặc định (trong trường hợp tham số này không được chỉ định) được đưa ra trong bảng sau:

Lớp chế_độ_mở mặc định

ofstream ios::out

ifstream ios::in

fstream ios::in|ios::out

Nếu tham số được ấn định một giá trị cụ thể, thì tham số được sử dụng sẽ ghi đè lên tham số mặc định mà không phải là kết hợp với tham số mặc định. Ví dụ, nếu sử dụng ofstream để mở file với tham số chế_độ_mở được quy định là ios::binary, thì tham số mở sẽ là ios::binary mà không phải là ios::out|ios::binary.

Nếu sử dụng hàm khởi tạo cho các lớp này, thì phương thức thành viên open sẽ tự động được triệu gọi. Nghĩa là ta có thể viết

ofstream myfile(“example.bin”, ios::out|ios::app, ios::binary); thay cho cách viết ở trên.

Để kiểm tra một file đã mở thành công hay chưa, chúng ta có thể sử dụng phương thức is_open. Nếu đã mở thành công, nó sẽ trả về giá trị true và ngược lại, nếu mở không thành công, nó sẽ trả về giá trị false.

C

+

+

Một phần của tài liệu Giáo trình lập trình hướng đối tượng c trường cao đẳng công nghiệp huế (Trang 160)