Yêu cầu mọi thông tin sao chép từ blog này phải được ghi rõ đầy đủ: Thông tin được sao chép từ "http://www.dangngochoangthanh.blogspot.com".

Cool wallpaper http://www.fancymessage.com

EMOJI KEYBOARD PRO http://emojiselector.com

THƯ VIỆN HÌNH ĐỘNG FLASH ANIMATION: http://flashanimationlibrary.blogspot.ru/

Hệ thống học trực tuyến đang được phát triển và sẽ đưa vào sử dụng vào cuối năm nay. Hãy xem qua một số demo của Học Trực Tuyến.


HỌC TRỰC TUYẾN ĐÃ CUNG CẤP PHIÊN BẢN TRUY CẬP QUA MOBILE http://dangngochoangthanh.blogspot.com/?m=1

XEM KÊNH HỌC TRỰC TUYẾN TRÊN YOUTUBE



Search on This Blog

Saturday, September 11, 2010

Mở File và Đóng File

C++ cung cấp cho ta các lớp sau đây để làm việc với file
  • ofstream: lớp ghi dữ liệu ra file.
  • ifstream: lớp đọc dữ liệu từ file.
  • fstream: lớp để đọc/ghi dữ liệu từ/lên file.
Các lớp này là dẫn xuất trực tiếp hoặc gián tiến từ lớp istream và ostream. Chúng ta sử dụng đối tượng cin là một thể hiện của lớp istream và cout là một thể hiện của lớp ostream. Chúng ta cũng có thể sử dụng trực tiếp các đối tượng của lớp ofstream, ifstream hoặc fstream để làm việc trực tiếp với file. Ví dụ sau đây sẽ cho thấy điều này
Ví dụ
#include #include
using namespace std;
int main(){
ofstream myfile;
myfile.open(“example.txt”);
myfile.<<”Ghi du lieu ra file”;
myfile.close();
return 0;
}
Ví dụ này chỉ đơn thuần ghi câu “Ghi du lieu ra file” lên tệp example.txt.
Chúng ta sẽ nghiên cứu từng bước khi làm việc với các đối tượng của ba lớp mà chúng ta nêu ở trên..

Mở file

Để 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ở. Bạn phải đảm bảo cung cấp đường dẫn chính xác đến tập tin này. Nếu bạn cung cấp đường dẫn tuyệt đối, thì mọi việc sẽ bình thường. Nhưng nếu bạn cung cấp đường dẫn tương đối, bạn 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.
- 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ụ, bạn 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 chứ không phải là ios::out|ios::binary.
Nếu bạn 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à bạn 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, bạn 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.

Đóng file

Khi chúng ta hoàn tất công việc với một file, chúng ta cần thực hiện thao tác đóng file lại. Tác vụ này là bắt buộc nếu bạn đã làm việc hoàn tất với file. Bạn chỉ đơn thuần triệu gọi phương thức thành viên close
myfile.close();
Nếu phương thức hủy của đối tượng được triệu gọi, phương thức close sẽ tự động được gọi theo.

2 comments:

  1. làm ơn nói vói tôi cái cách làm việc với nó ý. nói như bạn chả hiểu nổi, có chương trình mẫu không?

    ReplyDelete
  2. Bạn hỏi vấn đề này ở mục hỏi đáp giúp tôi nhé. Thân.

    ReplyDelete