C++ การจัดการไฟล์: วิธีเปิด เขียน อ่าน ปิดไฟล์ C++

การจัดการไฟล์คืออะไร C++?

ไฟล์จะเก็บข้อมูลอย่างถาวรในอุปกรณ์จัดเก็บข้อมูล ด้วยการจัดการไฟล์ ผลลัพธ์จากโปรแกรมจะถูกเก็บไว้ในไฟล์ สามารถดำเนินการต่างๆ กับข้อมูลได้ในขณะที่อยู่ในไฟล์

สตรีมคือการแยกอุปกรณ์ที่ดำเนินการอินพุต/เอาต์พุต คุณสามารถแสดงสตรีมเป็นปลายทางหรือแหล่งที่มาของอักขระที่มีความยาวไม่แน่นอนก็ได้ ซึ่งจะถูกกำหนดโดยการใช้งาน C++ ให้ไลบรารีที่มาพร้อมกับวิธีการจัดการไฟล์แก่คุณ ให้เราหารือเกี่ยวกับมัน

ห้องสมุด fstream

ห้องสมุด fstream จัดให้ C++ โปรแกรมเมอร์ที่มีสามคลาสสำหรับการทำงานกับไฟล์ ชั้นเรียนเหล่านี้รวมถึง:

  • ของกระแส– คลาสนี้แสดงถึงกระแสเอาต์พุต ใช้สำหรับสร้างไฟล์และเขียนข้อมูลลงไฟล์
  • ถ้าสตรีม– คลาสนี้แสดงถึงสตรีมอินพุต ใช้สำหรับอ่านข้อมูลจากไฟล์ข้อมูล
  • สตรีม– โดยทั่วไปคลาสนี้แสดงถึงสตรีมไฟล์ มันมาพร้อมกับความสามารถ ofstream/ifstream ซึ่งหมายความว่าสามารถสร้างไฟล์ เขียนไฟล์ อ่านจากไฟล์ข้อมูลได้

ภาพต่อไปนี้ทำให้เข้าใจได้ง่าย:

ห้องสมุด fstream
ห้องสมุด fstream

หากต้องการใช้คลาสข้างต้นของไลบรารี fstream คุณต้องรวมคลาสดังกล่าวไว้ในโปรแกรมของคุณเป็นไฟล์ส่วนหัว แน่นอน คุณจะใช้คำสั่ง #include preprocessor คุณต้องรวมไฟล์ส่วนหัว iostream ด้วย

วิธีการเปิดไฟล์

ก่อนจะดำเนินการใดๆ กับไฟล์ คุณต้องเปิดไฟล์เสียก่อน หากต้องการเขียนลงในไฟล์ ให้เปิดโดยใช้วัตถุ fstream หรือ ofstream หากคุณต้องการอ่านจากไฟล์เท่านั้น ให้เปิดโดยใช้วัตถุ ifstream

ออบเจ็กต์ทั้งสามรายการ ได้แก่ fstream, ofstream และ ifstream มีฟังก์ชัน open() ที่กำหนดไว้ในวัตถุเหล่านั้น ฟังก์ชันใช้ไวยากรณ์นี้:

open (file_name, mode);
  • พารามิเตอร์ file_name หมายถึงชื่อของไฟล์ที่จะเปิด
  • พารามิเตอร์โหมดเป็นทางเลือก สามารถรับค่าใด ๆ ต่อไปนี้ได้:
ความคุ้มค่า Descriptไอออน
ios::แอพ โหมดผนวก ผลลัพธ์ที่ส่งไปยังไฟล์จะถูกต่อท้าย
ios::กิน โดยจะเปิดไฟล์สำหรับเอาต์พุต จากนั้นจะย้ายการควบคุมการอ่านและเขียนไปยังจุดสิ้นสุดของไฟล์
iOS::ใน มันเปิดไฟล์เพื่ออ่าน
ios::ออก มันเปิดไฟล์เพื่อเขียน
ios::trunc หากมีไฟล์อยู่ องค์ประกอบไฟล์ควรถูกตัดทอนก่อนที่จะเปิด

สามารถใช้สองโหมดพร้อมกันได้ โดยใช้ตัวดำเนินการ | (OR)

1 ตัวอย่าง:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file", ios::out);
	if (!my_file) {
		cout << "File not created!";
	}
	else {
		cout << "File created successfully!";
		my_file.close(); 
	}
	return 0;
}

Output:

เปิดไฟล์

นี่คือภาพหน้าจอของรหัส:

เปิดไฟล์

คำอธิบายรหัส:

  1. รวมไฟล์ส่วนหัว iostream ไว้ในโปรแกรมเพื่อใช้ฟังก์ชันต่างๆ
  2. รวมไฟล์ส่วนหัว fstream ไว้ในโปรแกรมเพื่อใช้คลาสของมัน
  3. รวมเนมสเปซมาตรฐานไว้ในโค้ดของเราเพื่อใช้คลาสโดยไม่ต้องเรียกมัน
  4. เรียกใช้ฟังก์ชัน main() ตรรกะของโปรแกรมควรอยู่ภายในร่างกาย
  5. สร้างวัตถุของคลาส fstream และตั้งชื่อ my_file
  6. ใช้ฟังก์ชัน open() กับวัตถุด้านบนเพื่อสร้างไฟล์ใหม่ โหมดออกช่วยให้เราสามารถเขียนลงในไฟล์ได้
  7. ใช้คำสั่ง if เพื่อตรวจสอบว่าการสร้างไฟล์ล้มเหลวหรือไม่
  8. ข้อความให้พิมพ์บนคอนโซลหากไฟล์ไม่ได้ถูกสร้างขึ้น
  9. ส่วนท้ายของคำสั่ง if
  10. ใช้คำสั่ง else เพื่อระบุว่าต้องทำอย่างไรหากไฟล์ถูกสร้างขึ้น
  11. ข้อความที่จะพิมพ์บนคอนโซลหากไฟล์ถูกสร้างขึ้น
  12. ใช้ฟังก์ชัน close() กับวัตถุเพื่อปิดไฟล์
  13. ส่วนท้ายของคำสั่ง else
  14. โปรแกรมจะต้องคืนค่าหากดำเนินการสำเร็จ
  15. จุดสิ้นสุดของเนื้อหาฟังก์ชัน main()

วิธีปิดไฟล์

ครั้งเดียว C++ โครงการ สิ้นสุดลงโดยอัตโนมัติ

  • ชำระล้างกระแสน้ำ
  • ปล่อยหน่วยความจำที่จัดสรรไว้
  • ปิดไฟล์ที่เปิดอยู่

อย่างไรก็ตาม ในฐานะโปรแกรมเมอร์ คุณควรเรียนรู้ที่จะปิดไฟล์ที่เปิดอยู่ก่อนที่โปรแกรมจะยุติลง

วัตถุ fstream, ofstream และ ifstream มีฟังก์ชัน close() สำหรับการปิดไฟล์ ฟังก์ชันใช้ไวยากรณ์นี้:

void close();

วิธีเขียนลงไฟล์

คุณสามารถเขียนลงไฟล์ได้จากไฟล์ของคุณ C++ โปรแกรม คุณใช้ตัวดำเนินการแทรกสตรีม (<<) สำหรับสิ่งนี้ ข้อความที่จะเขียนลงในไฟล์ควรอยู่ในเครื่องหมายคำพูดคู่

ให้เราสาธิตสิ่งนี้

2 ตัวอย่าง:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file.txt", ios::out);
	if (!my_file) {
		cout << "File not created!";
	}
	else {
		cout << "File created successfully!";
		my_file << "Guru99";
		my_file.close();
	}
	return 0;
}

Output:

วิธีเขียนลงไฟล์

นี่คือภาพหน้าจอของรหัส:

วิธีเขียนลงไฟล์

คำอธิบายรหัส:

  1. รวมไฟล์ส่วนหัว iostream ไว้ในโปรแกรมเพื่อใช้ฟังก์ชันต่างๆ
  2. รวมไฟล์ส่วนหัว fstream ไว้ในโปรแกรมเพื่อใช้คลาสของมัน
  3. รวมเนมสเปซมาตรฐานในโปรแกรมเพื่อใช้คลาสโดยไม่ต้องเรียกมัน
  4. เรียกใช้ฟังก์ชัน main() ควรเพิ่มตรรกะของโปรแกรมภายในเนื้อหาของฟังก์ชันนี้
  5. สร้างอินสแตนซ์ของคลาส fstream และตั้งชื่อ my_file
  6. ใช้ฟังก์ชัน open() เพื่อสร้างไฟล์ใหม่ชื่อ my_file.txt ไฟล์จะถูกเปิดในโหมดออกเพื่อเขียนลงไป
  7. ใช้คำสั่ง if เพื่อตรวจสอบว่าไฟล์ไม่ได้ถูกเปิดหรือไม่
  8. ข้อความที่จะพิมพ์บนคอนโซลหากไม่ได้เปิดไฟล์
  9. ส่วนท้ายของคำสั่ง if
  10. ใช้คำสั่ง else เพื่อระบุว่าต้องทำอย่างไรหากไฟล์ถูกสร้างขึ้น
  11. ข้อความที่จะพิมพ์บนคอนโซลหากไฟล์ถูกสร้างขึ้น
  12. เขียนข้อความลงในไฟล์ที่สร้างขึ้น
  13. ใช้ฟังก์ชัน close() เพื่อปิดไฟล์
  14. ส่วนท้ายของคำสั่ง else
  15. โปรแกรมจะต้องคืนค่าเมื่อเสร็จสิ้นสำเร็จ
  16. ส่วนท้ายของฟังก์ชัน main()

วิธีอ่านจากไฟล์

คุณสามารถอ่านข้อมูลจากไฟล์ของคุณลงใน C++ โปรแกรม ทำได้โดยใช้ตัวดำเนินการแยกสตรีม (>>) คุณใช้ตัวดำเนินการในลักษณะเดียวกับที่คุณใช้อ่านอินพุตของผู้ใช้จากแป้นพิมพ์ อย่างไรก็ตาม แทนที่จะใช้วัตถุ cin คุณจะใช้วัตถุ ifstream/fstream

3 ตัวอย่าง:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file.txt", ios::in);
	if (!my_file) {
		cout << "No such file";
	}
	else {
		char ch;

		while (1) {
			my_file >> ch;
			if (my_file.eof())
				break;

			cout << ch;
		}

	}
	my_file.close();
	return 0;
}

Output:

อ่านจากไฟล์

ไม่มีไฟล์ดังกล่าว

นี่คือภาพหน้าจอของรหัส:

อ่านจากไฟล์

คำอธิบายรหัส:

  1. รวมไฟล์ส่วนหัว iostream ไว้ในโปรแกรมเพื่อใช้ฟังก์ชันต่างๆ
  2. รวมไฟล์ส่วนหัว fstream ไว้ในโปรแกรมเพื่อใช้คลาสของมัน
  3. รวมเนมสเปซมาตรฐานในโปรแกรมเพื่อใช้คลาสโดยไม่ต้องเรียกมัน
  4. เรียกใช้ฟังก์ชัน main() ควรเพิ่มตรรกะของโปรแกรมภายในเนื้อหาของฟังก์ชันนี้
  5. สร้างอินสแตนซ์ของคลาส fstream และตั้งชื่อ my_file
  6. ใช้ฟังก์ชัน open() เพื่อสร้างไฟล์ใหม่ชื่อ my_file.txt ไฟล์จะถูกเปิดในโหมดอินเพื่ออ่านจากไฟล์
  7. ใช้คำสั่ง if เพื่อตรวจสอบว่าไม่มีไฟล์อยู่หรือไม่
  8. ข้อความที่จะพิมพ์บนคอนโซลหากไม่พบไฟล์
  9. ส่วนท้ายของคำสั่ง if
  10. ใช้คำสั่ง else เพื่อระบุว่าต้องทำอย่างไรหากพบไฟล์ดังกล่าว
  11. สร้าง ตัวแปรถ่าน ชื่อช.
  12. สร้าง ในขณะที่วนซ้ำ สำหรับการวนซ้ำเนื้อหาไฟล์
  13. เขียน/จัดเก็บเนื้อหาของไฟล์ในตัวแปร ch
  14. ใช้ฟังก์ชัน if Condition และ eof() ซึ่งก็คือส่วนท้ายของไฟล์ เพื่อให้แน่ใจว่าคอมไพลเลอร์จะอ่านจากไฟล์ต่อไปหากไปไม่ถึงจุดสิ้นสุด
  15. ใช้คำสั่งแบ่งเพื่อหยุดการอ่านจากไฟล์เมื่อถึงจุดสิ้นสุด
  16. พิมพ์เนื้อหาของตัวแปร ch บนคอนโซล
  17. สิ้นสุดในขณะที่ร่างกาย
  18. ส่วนท้ายของคำสั่ง else
  19. เรียกใช้ฟังก์ชัน close() เพื่อปิดไฟล์
  20. โปรแกรมจะต้องคืนค่าเมื่อเสร็จสิ้นสำเร็จ
  21. ส่วนท้ายของฟังก์ชัน main()

สรุป

  • ด้วยการจัดการไฟล์ ผลลัพธ์ของโปรแกรมสามารถส่งและจัดเก็บไว้ในไฟล์ได้
  • สามารถดำเนินการหลายอย่างกับข้อมูลในขณะที่อยู่ในไฟล์ได้
  • สตรีมเป็นการแยกส่วนที่แสดงถึงอุปกรณ์ที่ใช้ดำเนินการอินพุต/เอาต์พุต
  • สตรีมสามารถแสดงเป็นปลายทางหรือแหล่งที่มาของอักขระที่มีความยาวไม่ จำกัด
  • ห้องสมุด fstream จัดให้ C++ โปรแกรมเมอร์พร้อมวิธีการจัดการไฟล์
  • หากต้องการใช้ไลบรารี คุณต้องรวมไว้ในโปรแกรมของคุณโดยใช้คำสั่ง #include preprocessor