Phân loại
Tập tin là hình thức lưu trữ phổ biến trên bộ nhớ phụ, gồm 2 loại:
 Tập tin văn bản: là tập tin chỉ lưu trữ thuần túy văn bản, trong đó các kí tự được biểu diễn 
bằng mã ASCII của nó, người dùng có thể đọc được.
o Tính chất
 Dễ truy xuất và xử lý
 Độ bảo mật kém
 Tốc độ truy xuất kém
 Kích thước lớn
o Ví dụ: Lưu số nguyên 12345 ở dạng binary (2 byte) và dạng chuỗi (5 byte)
o Các dạng thường gặp
 Tập tin cấu hình: *.INI, *.CFG
 *.TXT, *.HTML, *.XML
 Tập tin nhị phân: là tập tin chứa dữ liệu mà có ít nhất một vài chuỗi bit không thể biểu diễn ở
dạng văn bản trơn. Do đó tập tin này chỉ có máy đọc được, còn người không đọc được.
              
                                            
                                
            
 
            
                
7 trang | 
Chia sẻ: Mr Hưng | Lượt xem: 1193 | Lượt tải: 0
              
            Nội dung tài liệu Hướng dẫn thao tác với tập tin trong C++, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
 Đại học Quốc Gia Thành phố Hồ Chí Minh 
Trường Đại học Khoa Học Tự Nhiên 
Khoa Công Nghệ Thông Tin 
Hướng dẫn 
THAO TÁC 
VỚI TẬP TIN TRONG C++ 
 ________________________ 
 ________________________ 
Tháng 9/2011 
Thao tác với tập tin 
Khoa CNTT | ĐH KHTN TP HCM Trang 2 
1 Phân loại 
Tập tin là hình thức lưu trữ phổ biến trên bộ nhớ phụ, gồm 2 loại: 
 Tập tin văn bản: là tập tin chỉ lưu trữ thuần túy văn bản, trong đó các kí tự được biểu diễn 
bằng mã ASCII của nó, người dùng có thể đọc được. 
o Tính chất 
 Dễ truy xuất và xử lý 
 Độ bảo mật kém 
 Tốc độ truy xuất kém 
 Kích thước lớn 
o Ví dụ: Lưu số nguyên 12345 ở dạng binary (2 byte) và dạng chuỗi (5 byte) 
o Các dạng thường gặp 
 Tập tin cấu hình: *.INI, *.CFG 
 *.TXT, *.HTML, *.XML 
 Tập tin nhị phân: là tập tin chứa dữ liệu mà có ít nhất một vài chuỗi bit không thể biểu diễn ở 
dạng văn bản trơn. Do đó tập tin này chỉ có máy đọc được, còn người không đọc được. 
o Tính chất 
 Truy xuất và xử lý phức tạp 
 Tốc độ truy xuất nhanh 
 Tính bảo mật cao hơn 
o Các dạng thường gặp 
 Các tập tin có cấu trúc tự định nghĩa 
 *.DOC, *XLS, *.PDF, *.PPT 
 *.JPG, *.PCX, *.BMP, *.TIF 
 *.MP3, *.WAV, *.AVI 
2 Một số hàm thao tác tập tin với C++ 
Nhiều bộ thư viện cung cấp một tập các hàm thao tác với tập tin với C++. Ở đây giới thiệu 2 cách 
phổ dụng: 
 Tập hàm trong cstdio (stdio.h) 
 Tập hàm trong namespace std 
2.1 Sử dụng cstdio (stdio.h) 
2.1.1 Một số hàm xử lý chung 
Tên hàm Chức năng 
fopen Mở tập tin 
fclose Đóng tập tin 
fcloseall Đóng tất cả tập tin 
fflush Làm sạch vùng đệm của một tập tin đang mở 
fflushall Làm sạch vùng đệm của tất cả 
remove/unlink Xóa tập tin 
feof Kiểm tra xem đã đọc đến cuối tập tin 
Thao tác với tập tin 
Khoa CNTT | ĐH KHTN TP HCM Trang 3 
2.1.2 Một số hàm xử lý cho tập tin văn bản 
Tên hàm Chức năng 
fprintf Ghi giá trị dạng text lên tập tin 
fscanf Đọc giá trị dạng text từ tập tin 
putc/fputc Ghi lên tập tin một kí tự (sử dụng tập tin văn bản hoặc nhị phân có khác biệt ) 
getc/fgetc Đọc từ tập tin một kí tự (sử dụng tập tin văn bản hoặc nhị phân có khác biệt) 
fputs Ghi một chuỗi vào tập tin 
fgets Đọc một chuỗi từ tập tin 
2.1.3 Một số hàm xử lý cho tập tin nhị phân 
Tên hàm Chức năng 
putw Ghi một số nguyên lên tập tin 
getw Đọc một số nguyên từ tập tin 
fwrite Ghi các mẫu tin (có cấu trúc định trước) lên tập tin 
fread Đọc các mẫu tin (có cấu trúc định trước) từ tập tin 
fseek Di chuyển con trỏ đến vị trí mong muốn 
ftell Cho biết vị trí hiện tại của con trỏ 
Chi tiết của mỗi hàm có thể xem từ MSDN hoặc link sau: 
2.1.4 Ví dụ: 
 Ghi tập tin văn bản 
/* fprintf example */ 
#include 
int main () 
{ 
 FILE * pFile; 
 int n; 
 char name [100]; 
 pFile = fopen ("myfile.txt","w"); 
 for (n=0 ; n<3 ; n++) 
 { 
 puts ("please, enter a name: "); 
 gets (name); 
 fprintf (pFile, "Name %d [%-10.10s]\n",n,name); 
 } 
 fclose (pFile); 
 return 0; 
} 
Thao tác với tập tin 
Khoa CNTT | ĐH KHTN TP HCM Trang 4 
Đọc tập tin văn bản 
/* fscanf example */ 
#include 
int main () 
{ 
 char str [80]; 
 float f; 
 FILE * pFile; 
 pFile = fopen ("myfile.txt","w+"); 
 fprintf (pFile, "%f %s", 3.1416, "PI"); 
 rewind (pFile); 
 fscanf (pFile, "%f", &f); 
 fscanf (pFile, "%s", str); 
 fclose (pFile); 
 printf ("I have read: %f and %s \n",f,str); 
 return 0; 
} 
 Ghi tập tin nhị phân 
#include 
int main () 
{ 
 FILE * pFile; 
 char buffer[] = { 'x' , 'y' , 'z' }; 
 pFile = fopen ( "myfile.bin" , "wb" ); 
 fwrite (buffer , 1 , sizeof(buffer) , pFile ); 
 fclose (pFile); 
 return 0; 
} 
 Đọc tập tin nhị phân 
#include 
#include 
int main () { 
 FILE * pFile; 
 long lSize; 
 char buffer[255]; 
Thao tác với tập tin 
Khoa CNTT | ĐH KHTN TP HCM Trang 5 
 pFile = fopen ( "myfile.bin" , "rb" ); 
 if (pFile==NULL) {fputs ("File error",stderr); return;} 
 // copy the file into the buffer: 
 result = fread (buffer,1,255,pFile); 
 if (result != lSize) {fputs ("Reading error",stderr); return;} 
 fclose (pFile); 
 return 0; 
} 
2.2 Sử dụng namespace std 
 ofstream: class gồm các phương thức để ghi tập tin 
 ifstream: class gồm các phương thức để đọc tập tin 
 fstream: class gôm các phương thức cho cả thao tác đọc và ghi tập tin 
Ở đây chỉ giới thiệu fstream. 
2.2.1 Một số hàm xử lý chung 
Tên phương thức Chức năng 
open Mở tập tin 
close Đóng tập tin 
is_open Kiểm tra xem tập tin có đang mở hay không. 
flush Làm sạch vùng đệm của tập tin đang mở 
good Kiểm tra trạng thái của tập tin có tốt để đọc/ghi không 
eof Kiểm tra xem đã đọc đến cuối tập tin chưa 
2.2.2 Một số hàm xử lý cho tập tin văn bản 
Tên phương thức Chức năng 
operator >> Đọc dữ liệu từ tập tin 
operator << Ghi dữ liệu vào tập tin 
getline Đọc một dòng dữ liệu từ tập tin 
get Đọc một kí tự hoặc một chuỗi từ tập tin, tùy thuộc vào tham số của phương 
thức. 
put Ghi một kí tự xuống tập tin 
2.2.3 Một số hàm xử lý cho tập tin nhị phân 
Tên phương thức Chức năng 
read Đọc mẫu tin (theo cấu trúc định trước) từ tập tin 
write Ghi mẫu tin (theo cấu trúc định trước ) vào tập tin 
seekg Di chuyển con trỏ file đến vị trí xác định 
tellp Cho biết vị trí hiện tại của con trỏ file 
Thao tác với tập tin 
Khoa CNTT | ĐH KHTN TP HCM Trang 6 
Chi tiết của mỗi hàm có thể tham khảo trên MSDN hoặc link sau: 
2.2.4 Ví dụ: 
 Ghi tập tin văn bản 
#include 
#include 
using namespace std; 
int main () { 
 ofstream myfile; 
 myfile.open ("example.txt"); 
 myfile << "Writing this to a file.\n"; 
 myfile.close(); 
 return 0; 
} 
 Đọc tập tin văn bản 
#include 
#include 
#include 
using namespace std; 
int main () { 
 string line; 
 ifstream myfile ("example.txt"); 
 if (myfile.is_open()) 
 { 
 while ( myfile.good() ) 
 { 
 myfile >> line; 
 cout << line << endl; 
 } 
 myfile.close(); 
 } 
 else cout << "Unable to open file"; 
 return 0; 
} 
 Ghi tập tin nhị phân 
#include 
Thao tác với tập tin 
Khoa CNTT | ĐH KHTN TP HCM Trang 7 
using namespace std; 
int main () 
{ 
 ifstream file ("example.bin", ios::out|ios::binary|ios::ate); 
 char buffer[] = { 'x' , 'y' , 'z' }; 
 if(file.is_open()) 
file.write(buffer , sizeof(buffer) ); 
 file.close(); 
 return 0; 
} 
 Đọc tập tin nhị phân 
// Đọc toàn bộ nội dung của tập tin 
#include 
#include 
using namespace std; 
ifstream::pos_type size; 
char * memblock; 
int main () { 
 ifstream file ("example.bin", ios::in|ios::binary|ios::ate); 
 if (file.is_open()) 
 { 
 size = file.tellg(); 
 memblock = new char [size]; 
 file.seekg (0, ios::beg); 
 file.read (memblock, size); 
 file.close(); 
 cout << "the complete file content is in memory"; 
 delete[] memblock; 
 } 
 else cout << "Unable to open file"; 
 return 0; 
} 
            Các file đính kèm theo tài liệu này:
sinhvienit_net_huong_dan_thao_tac_file_9189.pdf