File I/O คือการเปิด ปิด อ่าน และเขียนข้อมูลลงไฟล์ โปรแกรมควรตรวจสอบสถานะไฟล์ทุกครั้ง เช่น เปิดไฟล์ไม่สำเร็จ ไฟล์ไม่มีอยู่ หรือสิทธิ์ในการเขียนไม่เพียงพอ
Stream ทำให้การรับส่งข้อมูลระหว่างโปรแกรมและไฟล์เป็นลำดับต่อเนื่อง ผู้เรียนจะฝึกใช้ File Stream เพื่ออ่านเขียนข้อมูลทีละบรรทัดหรือทีละชุดข้อมูล
การทำงานกับไฟล์มีโอกาสเกิดข้อผิดพลาดสูง จึงต้องมีการตรวจสอบและจัดการข้อผิดพลาด เช่น try-catch, return code หรือข้อความแจ้งเตือนที่เหมาะสม
สร้างโปรแกรมบันทึกและโหลดข้อมูลจากไฟล์ พร้อมตรวจสอบกรณีไฟล์หายหรือรูปแบบข้อมูลไม่ถูกต้อง
ผู้เรียนเรียนรู้การทำให้ข้อมูลอยู่รอดหลังปิดโปรแกรมผ่านการบันทึกลงไฟล์ โดยเปรียบเทียบไฟล์ข้อความที่อ่านง่ายกับไฟล์ไบนารีที่เหมาะกับข้อมูลเฉพาะรูปแบบ การออกแบบรูปแบบไฟล์ต้องกำหนดตัวคั่นข้อมูล ลำดับ field และวิธีจัดการข้อมูลที่มีอักขระพิเศษ
การอ่านไฟล์ต้องคำนึงถึงกรณีไฟล์ไม่มีอยู่ สิทธิ์ไม่พอ ไฟล์ว่าง ข้อมูลไม่ครบ หรือข้อมูลผิดชนิด โปรแกรมที่ดีควรแจ้งปัญหาอย่างเข้าใจง่ายและไม่ทำให้ข้อมูลเดิมเสียหาย
ต่อยอดโปรแกรม Structure จากสัปดาห์ที่ 4 ให้สามารถบันทึกและโหลดข้อมูลจากไฟล์ได้
File Processing คือการอ่าน เขียน และจัดการข้อมูลถาวรในไฟล์ โปรแกรมที่ดีต้องตรวจสอบสถานะไฟล์และจัดการกรณีผิดพลาด เช่น ไฟล์ไม่มีอยู่ ข้อมูลไม่ครบ หรือรูปแบบข้อมูลไม่ถูกต้อง
%%{init: {'theme': 'base', 'themeVariables': {
'background': '#282828',
'primaryColor': '#3c3836',
'primaryTextColor': '#fbf1c7',
'primaryBorderColor': '#fabd2f',
'lineColor': '#fe8019',
'secondaryColor': '#504945',
'tertiaryColor': '#665c54',
'fontFamily': 'Arial'
}}}%%
flowchart LR
A[Open File
เปิดไฟล์] --> B{Success?
สำเร็จหรือไม่}
B -- Yes --> C[Read/Write
อ่าน/เขียน]
B -- No --> D[Handle Error
จัดการข้อผิดพลาด]
C --> E[Validate Data
ตรวจข้อมูล]
E --> F[Close File
ปิดไฟล์]
#include <fstream>
#include <iostream>
using namespace std;
int main() {
ofstream out("students.txt"); // เปิดไฟล์สำหรับเขียน
if (!out) {
cout << "Cannot open file" << endl;
return 1;
}
out << "66001,Anan" << endl; // บันทึกข้อมูลตัวอย่าง
out.close();
ifstream in("students.txt"); // เปิดไฟล์สำหรับอ่าน
string line;
while (getline(in, line)) {
cout << line << endl; // expected: 66001,Anan
}
return 0;
}
| กรณีผิดพลาด | ผลกระทบ | แนวทางจัดการ |
|---|---|---|
| File Not Found | อ่านข้อมูลไม่ได้ | แจ้งผู้ใช้หรือสร้างไฟล์ใหม่ |
| Invalid Format | แปลงข้อมูลผิด | validate ก่อนใช้ |
| Permission Denied | เขียนไฟล์ไม่ได้ | แจ้งสิทธิ์หรือเปลี่ยน path |