C เขียนลงในไฟล์ไบนารี ดูว่า "สัญกรณ์ไบนารี" ในพจนานุกรมอื่น ๆ คืออะไร วิธีการหลักของคลาส BinaryReader
- มีชื่อบนดิสก์ซึ่งช่วยให้โปรแกรมสามารถระบุและทำงานกับหลายไฟล์ได้
- ความยาวไฟล์ถูกจำกัดด้วยความจุของดิสก์เท่านั้น
มักจำเป็นต้องป้อนข้อมูลบางส่วนจากไฟล์หรือส่งออกผลลัพธ์เป็นไฟล์ . ตัวอย่างเช่น อาจจำเป็นต้องประมวลผลอาร์เรย์ที่มีขนาดใหญ่เกินกว่าที่จะใส่ลงในหน่วยความจำได้ทั้งหมด
ตัวอย่างเช่น อ่านตัวเลขสามตัวจากไฟล์ที่มีเนื้อหา อย่างไรก็ตาม นักพัฒนาจะต้องระมัดระวังไม่ให้โหลดไฟล์เปล่า นั่นคือเมื่อไฟล์เสร็จสิ้น ถือเป็นแนวทางปฏิบัติที่ไม่ดีที่จะถือว่าไฟล์ไบนารี่เป็นข้อความและอ่านเนื้อหาเป็นอักขระตัวเดียว แน่นอนว่าทั้งหมดนี้ใช้งานได้และคุณสามารถดูภาพวาดหรือคัดลอกไฟล์ได้ แต่การโหลดจากไฟล์ไบต์ทีละไบต์ใช้เวลานานมาก ปกติ ภาพแรสเตอร์สามารถโหลดได้ภายในไม่กี่วินาที!
นี้เป็นอย่างมาก วิธีที่รวดเร็วการเขียนและการอ่าน วิธีที่ดีที่สุดคือดูตัวอย่างง่ายๆ ในหัวข้อวิธีใช้ที่คัดลอกไฟล์ที่ระบุเป็นพารามิเตอร์โปรแกรมไปยังตำแหน่งที่ระบุโดยพารามิเตอร์ตัวที่สอง โปรแกรมนี้ไม่ทำงานทันที คุณควรให้พารามิเตอร์ 2 ตัวซึ่งจะหมายถึง 2 ไฟล์ ไฟล์แรกต้องเป็นไฟล์ที่มีอยู่จริงบนดิสก์ พารามิเตอร์ตัวที่สองคือไฟล์ที่สร้างขึ้น
ไฟล์แบ่งออกเป็นข้อความและไบนารี
ไฟล์ข้อความเป็นไฟล์ที่อักขระแต่ละตัวจากชุดอักขระที่ใช้ถูกจัดเก็บเป็นหนึ่งไบต์ (รหัสที่สอดคล้องกับอักขระ) ไฟล์ข้อความจะถูกแบ่งออกเป็นหลายบรรทัดโดยใช้อักขระพิเศษ "สิ้นสุดบรรทัด" ไฟล์ข้อความสิ้นสุดลง ตัวละครพิเศษ"สิ้นสุดไฟล์"
ไฟล์ไบนารี - ไฟล์ที่มีข้อมูลแสดงในรูปแบบไบนารี เมื่อบันทึกเข้า ไฟล์ไบนารีอักขระและตัวเลขเขียนตามลำดับไบต์ (ในอักขระภายใน การเป็นตัวแทนไบนารี ในหน่วยความจำคอมพิวเตอร์)
คุณลักษณะพิเศษของภาษา C++ ก็คือยังขาดอยู่ ไฟล์ที่มีโครงสร้าง- ไฟล์ทั้งหมดจะถือเป็นลำดับไบต์ที่ไม่มีโครงสร้าง ด้วยแนวทางนี้ แนวคิดของไฟล์จึงขยายไปยังอุปกรณ์ต่างๆ
ใน C ++ มี วิธีพิเศษข้อมูลเข้า/ออก ทั้งหมด การดำเนินการ I/Oถูกนำไปใช้งานโดยใช้ฟังก์ชันที่อยู่ในไลบรารี C ++ ไลบรารี C++ รองรับ I/O สามระดับ:
- สตรีมมิ่ง I/O;
- I/O ระดับล่าง;
- I/O สำหรับคอนโซลและพอร์ต (ขึ้นอยู่กับระบบปฏิบัติการ)
ไหลเป็นแนวคิดเชิงนามธรรมที่อ้างถึงการถ่ายโอนข้อมูลจากต้นทางไปยังปลายทาง
ฟังก์ชันไลบรารี C++ I/O ที่รองรับการสื่อสารไฟล์ระดับเธรดทำให้คุณสามารถประมวลผลข้อมูลได้ ขนาดต่างๆและรูปแบบในขณะเดียวกันก็มั่นใจ อินพุตบัฟเฟอร์และข้อสรุป ดังนั้นสตรีมจึงแสดงไฟล์นี้พร้อมกับสิ่งอำนวยความสะดวกในการบัฟเฟอร์ที่มีให้
การอ่านข้อมูลจากสตรีมเรียกว่าการดึงข้อมูล ส่วนเอาต์พุตไปยังสตรีมเรียกว่า ห้อง (เปิด).
สตรีมถูกกำหนดให้เป็นลำดับของไบต์และไม่ขึ้นอยู่กับ อุปกรณ์เฉพาะที่ทำการแลกเปลี่ยนกับใคร ( แกะ, ไฟล์บนดิสก์ แป้นพิมพ์ หรือเครื่องพิมพ์) แลกกับด้ายเพิ่มขึ้น ความเร็วในการส่งตามกฎแล้วข้อมูลจะถูกสร้างขึ้นผ่านพื้นที่พิเศษ หน่วยความจำเข้าถึงโดยสุ่ม – กันชน- บัฟเฟอร์จะสะสมไบต์ และการถ่ายโอนข้อมูลจริงจะเกิดขึ้นหลังจากที่บัฟเฟอร์เต็ม (รูปที่ 19.1) เมื่อเข้ามาจะทำให้สามารถแก้ไขข้อผิดพลาดได้หากข้อมูลจากบัฟเฟอร์ยังไม่ได้ถูกส่งไปยังโปรแกรม
ข้าว. 19.1.
เมื่อทำงานกับสตรีม คุณสามารถ:
- เปิดและปิดสตรีม (เชื่อมโยงพอยน์เตอร์สตรีมกับไฟล์เฉพาะ)
- อินพุตและเอาต์พุตสตริง ตัวอักษร ข้อมูลที่จัดรูปแบบ ชิ้นส่วนของข้อมูลที่มีความยาวตามใจชอบ
- วิเคราะห์ข้อผิดพลาด I/O และความสำเร็จเมื่อสิ้นสุดไฟล์
- จัดการการบัฟเฟอร์สตรีมและขนาดบัฟเฟอร์
- รับและติดตั้ง ตัวบ่งชี้ตำแหน่งปัจจุบันในไฟล์.
เมื่อโปรแกรมเริ่มทำงาน เธรดทั้ง 5 จะถูกเปิดโดยอัตโนมัติ โดยเธรดหลักคือ:
- อินพุตมาตรฐาน (อ้างอิงโดยใช้ตัวชี้ที่กำหนดไว้ล่วงหน้าไปยัง stdin);
- เอาต์พุตมาตรฐาน(stdout);
- เอาต์พุตมาตรฐานข้อความแสดงข้อผิดพลาด (stderr)
ค่าเริ่มต้น กระแสมาตรฐานป้อนข้อมูล stdin ถูกกำหนดให้กับคีย์บอร์ด และ stdout และ stderr ถูกกำหนดให้กับหน้าจอมอนิเตอร์
ในภาษาซี++ การดำเนินการไฟล์สามารถทำได้สองโหมด: จัดรูปแบบและ สตรีมมิ่ง.
มาดูฟังก์ชั่นหลักสำหรับการทำงานกับไฟล์ในโหมดฟอร์แมต
ฟังก์ชั่นเปิดไฟล์
หากต้องการทำงานกับไฟล์ในภาษา C++ คุณต้องมีลิงก์ไปยังไฟล์ เพื่อกำหนดลิงค์ดังกล่าว มีโครงสร้าง FILE ที่อธิบายไว้ในไฟล์ stdio.h โครงสร้างนี้มีทุกอย่าง ช่องที่ต้องเติมสำหรับการจัดการไฟล์ เช่น ตัวชี้บัฟเฟอร์ปัจจุบัน ตัวนับไบต์ปัจจุบัน ที่อยู่ฐานบัฟเฟอร์ I/O หมายเลขไฟล์
เมื่อเปิดไฟล์ (สตรีม) ตัวชี้ไปยังสตรีม (ตัวชี้ไฟล์) จะถูกส่งกลับไปยังโปรแกรมซึ่งเป็นตัวชี้ไปยังวัตถุ ประเภทโครงสร้างไฟล์. ตัวชี้นี้ระบุเธรดในการดำเนินการที่ตามมาทั้งหมด
ตัวอย่างเช่น:
#รวม
มีฟังก์ชั่นเปิดไฟล์ โฟเพนซึ่งเริ่มต้นไฟล์
ไวยากรณ์:
fp=fopen(ชื่อไฟล์, OpenMode);
โดยที่ fp เป็นตัวชี้ไปยังสตรีม (ตัวชี้ไฟล์)
ชื่อไฟล์เป็นตัวชี้ไปยังสตริงอักขระที่แสดงชื่อไฟล์ที่ถูกต้อง ซึ่งอาจรวมถึงข้อกำหนดเฉพาะของไฟล์ด้วย (รวมถึงสัญลักษณ์ อุปกรณ์ลอจิคัล, พาธไปยังไฟล์และชื่อไฟล์จริง);
OpenMode – ตัวชี้ไปที่บรรทัดของโหมดการเปิดไฟล์
ตัวอย่างเช่น:
fp=fopen("t.txt","r");
การเปิดไฟล์มีหลายโหมด
โหมด | คำอธิบาย | เริ่มด้วย... |
---|---|---|
ร | เปิด ไฟล์ข้อความสำหรับการอ่าน หากไม่มีไฟล์อยู่ จะเกิดข้อผิดพลาดขึ้นเมื่อโปรแกรมถูกเรียกใช้งาน | เริ่ม |
ว | เปิดไฟล์ข้อความเพื่อเขียน หากไม่มีไฟล์อยู่ ไฟล์นั้นจะถูกสร้างขึ้น หากไฟล์มีอยู่แล้ว เนื้อหาจะถูกลบและไฟล์จะถูกเขียนทับ | เริ่ม |
ก | เปิดไฟล์ข้อความสำหรับการต่อท้าย หากไม่มีไฟล์อยู่ ไฟล์นั้นจะถูกสร้างขึ้น หากมีอยู่ เนื้อหาจะไม่ถูกลบออกจากเนื้อหา | จบ |
ร+ | เปิดไฟล์ข้อความสำหรับการอ่านและการเขียน ขนาดไฟล์ไม่สามารถเปลี่ยนแปลงได้ หากไม่มีไฟล์อยู่ จะเกิดข้อผิดพลาดขึ้นเมื่อโปรแกรมถูกเรียกใช้งาน | เริ่ม |
มี+ | เปิดไฟล์ข้อความสำหรับการอ่านและการเขียน หากไม่มีไฟล์อยู่ ไฟล์นั้นจะถูกสร้างขึ้น หากไฟล์มีอยู่แล้ว เนื้อหาจะถูกลบและไฟล์จะถูกเขียนทับ | เริ่ม |
เอ+ | เปิดไฟล์ข้อความสำหรับการอ่านและการเขียน หากไม่มีไฟล์อยู่ ไฟล์นั้นจะถูกสร้างขึ้น หากมีอยู่ เนื้อหาจะไม่ถูกลบออกจากเนื้อหา | จบ |
รบี | เปิดไฟล์ไบนารีสำหรับการอ่าน หากไม่มีไฟล์อยู่ จะเกิดข้อผิดพลาดขึ้นเมื่อโปรแกรมถูกเรียกใช้งาน | เริ่ม |
wb | เปิดไฟล์ไบนารีสำหรับการเขียน หากไม่มีไฟล์อยู่ ไฟล์นั้นจะถูกสร้างขึ้น หากไฟล์มีอยู่แล้ว เนื้อหาจะถูกลบและไฟล์จะถูกเขียนทับ | เริ่ม |
เกี่ยวกับ | เปิดไฟล์ไบนารีเพื่อต่อท้าย หากไม่มีไฟล์อยู่ ไฟล์นั้นจะถูกสร้างขึ้น หากมีอยู่ เนื้อหาจะไม่ถูกลบออกจากเนื้อหา | จบ |
ร+บี | เปิดไฟล์ไบนารีสำหรับการอ่านและการเขียน ขนาดไฟล์ไม่สามารถเปลี่ยนแปลงได้ หากไม่มีไฟล์อยู่ จะเกิดข้อผิดพลาดเมื่อโปรแกรมถูกเรียกใช้งาน | เริ่ม |
รบี+ | ||
มี+ข | เปิดไฟล์ไบนารีสำหรับการอ่านและการเขียน หากไม่มีไฟล์อยู่ ไฟล์นั้นจะถูกสร้างขึ้น หากไฟล์มีอยู่แล้ว เนื้อหาจะถูกลบและไฟล์จะถูกเขียนทับ | เริ่ม |
wb+ | ||
ก+ข | เปิดไฟล์ไบนารีสำหรับการอ่านและการเขียน หากไม่มีไฟล์อยู่ ไฟล์นั้นจะถูกสร้างขึ้น หากมีอยู่ เนื้อหาจะไม่ถูกลบออกจากเนื้อหา | จบ |
ab+ |