Bài giảng này trình bày một số khái niệm cơ bản về tệp tin (File), thư mục (Folder)..., các thao tác với File (như thao tác MởĐóng, di chuyển con trỏ...), cách ĐọcGhi File văn bản và ĐọcGhi File nhị phân,... Mời các bạn cùng tham khảo để tìm hiểu rõ hơn về nội dung chi tiết.
10/11/2016 Kỹ thuật lập trình Tuần - Dữ liệu dạng tệp tin (File) Giáo viên: Hà Đại Dương duonghd@mta.edu.vn 10/11/2016 Đã học • Dữ liệu: vào, cho chương trình – Kiểu: Nguyên, Thực; Tổ chức: Mảng, Con trỏ, Xâu… – Nhập: Từ bàn phím; – Ra: hình • Vấn đề: Giả sử cần quản lý điểm SV lớp có 100 SV, theo trên: – Mỗi lần cần: Nhập từ bàn phím 100 SV: Họ tên …? Nhập lần lưu vào MT để sử dụng cho lần sau 10/11/2016 Lưu liệu máy tính • Ví dụ: Danh sách sinh viên • Lưu trữ đâu? • Lưu trữ nào? 10/11/2016 10/11/2016 Nội dung Một số khái niệm – Tệp tin (File) – Thư mục (Folder) … Các thao tác với File – Mở/Đóng – Di chuyển trỏ … Đọc/Ghi File văn Đọc/Ghi File nhị phân 10/11/2016 Một số khái niệm 10/11/2016 Thư mục • Là cách tổ chức nơi lưu trữ liệu ổ đĩa máy tính • Đặc trưng bởi: Vị trí tên • Ví dụ 10/11/2016 10/11/2016 Cây thư mục 10/11/2016 Tệp tin (File) • Đối tượng chứa liệu (hoặc chương trình máy tính) • Phân loại: – File liệu, File chương trình – File văn bản, File ảnh, File âm … – File text, File nhị phân • Thể bởi: – Vị trí (ổ đĩa nào, thư mục gì? …) – Tên phần mở rộng 10/11/2016 Tệp tin (File) … • Ví dụ: Tên file 10/11/2016 Vị trí Phần mở rộng 10/11/2016 Đường dẫn (Path) • Xâu ký tự vị trí File • Bắt đầu tên ổ đĩa • Tiếp đến (tên) thư mục cha (nếu có) đến (tên) thư mục tiếp tục • Ví dụ: Đường dẫn đến thư mục KTLT ổ đĩa D: D:\GiangDay\20162017K1\KTLT 10/11/2016 10 Dữ liệu dạng tệp tin • Dữ liệu cho chương trình máy tính chủ yếu dạng tệp tin - Tệp tin liệu (tệp liệu), hay file liệu • File liệu xét cách lưu trữ có dạng: – Text file (file văn - khác với document) – Binary file (file nhị phân) 10/11/2016 11 Text file (File văn bản) 10/11/2016 12 10/11/2016 Text file gì? • Text file dạng file liệu mà nội dung lưu trữ thành dòng, “đọc” công cụ “thông thường” • A text file (sometimes spelled "textfile": an old alternative name is "flatfile") is a kind of computer file that is structured as a sequence of lines of electronic text (https://en.wikipedia.org/wiki/Text_file) 10/11/2016 13 Ví dụ • File dulieuvao.txt nội dung 10/11/2016 14 Làm việc với text file Khai báo biến (kiểu FILE) Mở/Đóng file Một số thao tác khác – Di chuyển vị trí trỏ liệu – Lấy vị trí trỏ liệu – Kiểm tra dấu hiệu kết thúc file Đọc/Ghi liệu từ file 10/11/2016 15 10/11/2016 Khai báo biến file • Kiểu liệu: FILE • Khai báo dạng trỏ FILE *f 1, f2, …; – FILE: Kiểu liệu – f: trỏ kiểu FILE dùng để truy xuất liệu (từ file) • Ví dụ: FILE f; 10/11/2016 16 Mở file - Hàm fopen() • Biến f sau khai báo dùng để truy xuất (đọc/ghi) liệu file thông qua thao tác mở file • Hàm fopen() – Cú pháp: FILE *fopen(char *P, const char *M) – Trả về: trỏ file (FILE *) – P: đường dẫn tên file cần mở – M: phương thức (cách thức) mở file 10/11/2016 17 Mở file - Hàm fopen() Cú pháp: FILE *fopen(char *P, const char *M) • M: phương thức (cách thức) mở file – "r“: Opens for reading If the file does not exist or cannot be found, the fopen call fails – "w“: Opens an empty file for writing If the given file exists, its contents are destroyed – "a“: Opens for writing at the end of the file (appending) without removing the EOF marker before writing new data to the file; creates the file first if it doesn’t exist 10/11/2016 18 10/11/2016 Mở file - Hàm fopen() Cú pháp: FILE *fopen(char *P, const char *M) • M: phương thức (cách thức) mở file – "r+“: Opens for both reading and writing (The file must exist.) – "w+“: Opens an empty file for both reading and writing If the given file exists, its contents are destroyed – "a+“: Opens for reading and appending; (https://msdn.microsoft.com/enus/library/aa246392(v=vs.60).aspx) 10/11/2016 19 Mở file - Hàm fopen() Cú pháp: FILE *fopen(char *P, const char *M) • M: phương thức (cách thức) mở file – Sau giá trị thêm vào ký tự • t: rõ file cần mở text file; • b: rõ file cần mở binary file; (https://msdn.microsoft.com/enus/library/aa246392(v=vs.60).aspx) 10/11/2016 20 Mở file - Hàm fopen() – Cú pháp: FILE *fopen(char *P, const char *M) • Ví dụ: f=fopen(“D:\\GiangDay\\20162017K1\\KTLT\\ref\\ dulieuvao.txt”,”w+”); Diễn giải xác nội dung câu lệnh 10/11/2016 21 10/11/2016 Đóng file • Đóng file – Hàm: int fclose(FILE *f) • Đóng tất file mở – Hàm: int fcloseall() 10/11/2016 22 Con trỏ liệu • Con trỏ liệu (con trỏ): Cho phép xác định vị trí (địa chỉ) mà tác động đọc/ghi thực file • Sau mở (fopen) trỏ liệu đầu file • Các thao tác đọc/ghi làm dịch chuyển trỏ liệu khoảng kích thước khối liệu đọc/ghi 10/11/2016 23 Một số thao tác khác • Kiểm tra dấu hiệu kết thúc file – Hàm: int feof(FILE *f) • Lấy vị trí trỏ liệu (hiện thời) – Hàm: long ftell(FILE *f) • Di chuyển trỏ liệu đầu file – Hàm: void rewind(FILE *f) 10/11/2016 24 10/11/2016 Một số thao tác khác … • Di chuyển trỏ liệu vị trí – Hàm: int fseek(FILE *f, long offset, int whence) – Trong • offset: số byte cần dịch chuyển trỏ liệu liệu tính từ vị trí whence • whence: – SEEK_SET (0): Vị trí làm mốc để tính đầu tệp tin – SEEK_CUR (1): Vị trí làm mốc để tính vị trí thời – SEEK_END (2): Vị trí làm mốc để tính cuối tệp tin 10/11/2016 25 Ghi liệu vào file • Ghi ký tự – Hàm: int fputc(int c, FILE *f) • Ghi xâu ký tự – Hàm: int fputs(const char *buffer, FILE *f) – Hàm: fprintf(FILE *f, const char *format, varexpr) 10/11/2016 26 Ví dụ 10/11/2016 27 10/11/2016 Đọc liệu từ file • Đọc ký tự – Hàm: int fgetc(FILE *f) • Đọc xâu ký tự – Hàm: char *fgets(char *buffer, int n, FILE *f) – Hàm: fscanf(FILE *f, const char *format, varlist) 10/11/2016 28 Ví dụ 10/11/2016 29 Ví dụ • Soạn thảo file text công cụ notepad với nội dung sau: – dòng đầu ghi: m n – m dòng tiếp theo: dòng ghi n giá trị ma trận A(m,n) • Ví dụ: Mô tả ma trận: 3x3 liệu file text 10/11/2016 30 10 10/11/2016 Ví dụ … • Ghi file liệu vào file: d:\input.dat • Viết chương trình cho phép đọc ma trận từ file d:\input.dat in ma trận đọc lên hình • Chương trình 10/11/2016 31 10/11/2016 32 Ví dụ … • Kết 10/11/2016 33 11 10/11/2016 Ví dụ • Cho text file (d:\input2.dat) nội dung sau: – dòng đầu ghi: m n – m dòng tiếp theo: ghi n giá trị ma trận A(m,n) – Dòng ghi: p q – q dòng tiếp theo: ghi p giá trị ma trận B(p,q) • Viết chương trình (15 phút) cho phép: – Đọc vào ma trận A, B từ file d:\input2.dat – Ghi kết ma trận tổng B = A + B text file d:\output2.dat 10/11/2016 34 Binary file (File nhị phân) 10/11/2016 35 Binary file gì? • File nhị phân: File liệu máy tính lưu trữ dạng mã nhị phân (cách gọi nhằm phân biệt với text file) • A binary file is a computer file that is not a text file The term "binary file" is often used as a term meaning "non-text file" Text file itself is a binary file and all computer files are binary file (https://en.wikipedia.org/wiki/Binary_file) 10/11/2016 36 12 10/11/2016 Ví dụ • Dữ liệu file nhị phân nhìn sau: 10/11/2016 37 Làm việc với binary file Khai báo biến (kiểu FILE): TT text file Mở/Đóng file: TT text file Một số thao tác khác: TT text file – Di chuyển vị trí trỏ liệu – Lấy vị trí trỏ liệu – Kiểm tra dấu hiệu kết thúc file Đọc/Ghi liệu từ file: Sử dụng hàm khác với text file 10/11/2016 38 Khai báo biến file • Kiểu liệu: FILE • Khai báo dạng trỏ FILE *f 1, f2, …; – FILE: Kiểu liệu – f: trỏ kiểu FILE dùng để truy xuất liệu (từ file) • Ví dụ: FILE f; 10/11/2016 39 13 10/11/2016 Mở file - Hàm fopen() Cú pháp: FILE *fopen(char *P, const char *M) • M: phương thức (cách thức) mở file – Sau giá trị thêm vào ký tự • t: rõ file cần mở text file; • b: rõ file cần mở binary file; (https://msdn.microsoft.com/enus/library/aa246392(v=vs.60).aspx) 10/11/2016 40 Đóng file • Đóng file – Hàm: int fclose(FILE *f) • Đóng tất file mở – Hàm: int fcloseall() 10/11/2016 41 Ghi liệu vào file nhị phân • Hàm fwrite() – Cú pháp: fwrite(const void *p, size_t s, size_t n, FILE *f); – Trong đó: • p: Con trỏ đến vùng liệu cần ghi • s: kích thước phần tử • n: số phần tử ghi vào file • f: trỏ file cần ghi 10/11/2016 42 14 10/11/2016 Ví dụ • Ghi thông số sau đây: 15, 10, 2016, 31.5 16, 10, 2016, 33.8 Vào file d:\nhietdongay.dat 10/11/2016 43 10/11/2016 44 Ví dụ • Nội dung file d:\nhietdongay.dat mở VS sau: 10/11/2016 45 15 10/11/2016 Đọc liệu từ file nhị phân • Hàm fread() – Cú pháp: fread(const void *p, size_t s, size_t n, FILE *f); – Trong đó: • p: Con trỏ quản lý liệu đọc • s: kích thước phần tử • n: số phần tử đọc từ file • f: trỏ file cần đọc 10/11/2016 46 Ví dụ • Đọc liệu từ file d:\nhietdongay.dat (đã biết cách lưu trữ) – số nguyên, số float – số nguyên, số float 10/11/2016 47 Ví dụ 10/11/2016 48 16 10/11/2016 Ví dụ • Nội dung file d:\nhietdongay.dat 15, 10, 2016, 31.5 16, 10, 2016, 33.8 10/11/2016 49 Ví dụ • Viết chương trình cho phép nhập vào danh sách bao gồm họ tên sinh viên điểm trung bình tốt nghiệp từ bàn phím, ghi danh sách vào tệp tin d:\sinhvien.dat dạng nhị phân • Viết chương trình (15 phút) 10/11/2016 50 Lưu ý • Có thể xem đọc nội dung text file • Với file nhị phân để đọc nội dung cần biết cách lưu trữ liệu 10/11/2016 51 17 10/11/2016 Bài tập 10/11/2016 52 Bài tập Giả sử text file D:\SinhvienHT.dat chứa danh sách họ tên SV, tên sinh viên viết dòng Viết chương trình đọc file D:\Sinhvien.dat chuẩn hoá tên SV ghi danh sách tên SV chuẩn hoá file D:\SinhvienCH.dat 10/11/2016 53 Bài tập Sửa lại chương trình ví dụ để xem danh sách sinh viên có tệp d:\sinhvien.dat, thêm nhập thêm sinh viên vào danh sách 10/11/2016 54 18 10/11/2016 Bài tập nhà Tìm hiểu số khái niệm liên quan đến việc tổ chức lưu trữ liệu máy tính – – – – – FAT32 NTFS Thư mục (Folder, Directory) Tệp tin(File) Đường dẫn (Path) 10/11/2016 55 Bài tập nhà … Trình bày chi tiết hai khái niệm: Text file Plain text Xem lại thử nghiệm tất hàm liên quan đến file C/C++ 10/11/2016 56 19 ... 10/11/2016 10 Dữ liệu dạng tệp tin • Dữ liệu cho chương trình máy tính chủ yếu dạng tệp tin - Tệp tin liệu (tệp liệu) , hay file liệu • File liệu xét cách lưu trữ có dạng: – Text file (file văn - khác... trữ liệu ổ đĩa máy tính • Đặc trưng bởi: Vị trí tên • Ví dụ 10/11/2016 10/11/2016 Cây thư mục 10/11/2016 Tệp tin (File) • Đối tượng chứa liệu (hoặc chương trình máy tính) • Phân loại: – File liệu, ... liên quan đến việc tổ chức lưu trữ liệu máy tính – – – – – FAT32 NTFS Thư mục (Folder, Directory) Tệp tin( File) Đường dẫn (Path) 10/11/2016 55 Bài tập nhà … Trình bày chi tiết hai khái niệm: Text