
Xử lý file là kỹ năng thiết yếu để tạo ra các ứng dụng thực tế. Hiểu rõ cách đọc ghi file văn bản và nhị phân, quản lý file pointer và xử lý lỗi sẽ giúp bạn xây dựng các chương trình có thể lưu trữ và khôi phục dữ liệu.
Xử lý file là một phần quan trọng trong lập trình, cho phép lưu trữ và truy xuất dữ liệu một cách bền vững. Khả năng làm việc với file giúp tạo ra các ứng dụng thực tế có thể lưu trữ dữ liệu, cấu hình và trao đổi thông tin với các chương trình khác.
Quảng cáo giúp chúng tôi duy trì trang web này
Tổng quan về xử lý file
Khái niệm file
File là một tập hợp dữ liệu được lưu trữ trên thiết bị lưu trữ (ổ cứng, USB, v.v.). File cho phép dữ liệu tồn tại ngay cả khi chương trình kết thúc.
Các loại file
File văn bản (Text File): Chứa dữ liệu dạng văn bản, có thể đọc được bằng text editor
- Dễ đọc và chỉnh sửa
- Sử dụng ký tự newline để xuống dòng
- Phù hợp cho cấu hình, log, dữ liệu người dùng
Mở và đóng file
Khai báo con trỏ file
Hàm fopen() - Mở file
Các chế độ mở file
| Mode | Mô tả |
|---|---|
| "r" | Mở để đọc (file phải tồn tại) |
| "w" | Mở để ghi (tạo file mới hoặc ghi đè) |
| "a" | Mở để ghi thêm vào cuối file |
| "r+" | Mở để đọc và ghi |
| "w+" | Tạo file mới để đọc và ghi |
| "a+" | Mở để đọc và ghi thêm vào cuối |
Ví dụ cơ bản:
Ghi file văn bản
fprintf() - Ghi có định dạng
fputs() - Ghi chuỗi
fputc() - Ghi ký tự
Đọc file văn bản
fscanf() - Đọc có định dạng
fgets() - Đọc dòng
fgetc() - Đọc ký tự
Ghi file nhị phân
fwrite() - Ghi dữ liệu nhị phân
Ghi mảng vào file nhị phân
Đọc file nhị phân
fread() - Đọc dữ liệu nhị phân
Đọc mảng từ file nhị phân
Di chuyển con trỏ file
fseek() - Di chuyển đến vị trí cụ thể
ftell() - Lấy vị trí hiện tại
rewind() - Về đầu file
Kiểm tra lỗi file
feof() - Kiểm tra cuối file
ferror() - Kiểm tra lỗi
Gộp nội dung file
Sao chép file
Ví dụ thực hành
1. Quản lý danh sách sinh viên với file
2. Ghi/đọc struct vào file nhị phân
Tổng kết
Xử lý file là kỹ năng thiết yếu để tạo ra các ứng dụng thực tế có thể lưu trữ và khôi phục dữ liệu.
- Luôn đóng file: Sử dụng fclose() để tránh memory leak
- Kiểm tra lỗi: Luôn kiểm tra kết quả fopen() trước khi sử dụng
- File modes: Hiểu rõ sự khác biệt giữa "r", "w", "a"
- Buffer flush: Sử dụng fflush() khi cần đảm bảo dữ liệu được ghi ngay
- Luôn kiểm tra file pointer trước khi thao tác
- Sử dụng binary mode cho dữ liệu struct
- Kiểm tra EOF và lỗi khi đọc file
- Sử dụng fseek() để di chuyển trong file hiệu quả
- Backup dữ liệu quan trọng trước khi ghi đè
Với những kiến thức này, bạn đã sẵn sàng để xây dựng các ứng dụng có thể lưu trữ dữ liệu bền vững và tạo nền tảng cho các hệ thống quản lý dữ liệu phức tạp!
Last updated on