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;

มีฟังก์ชั่นเปิดไฟล์ โฟเพนซึ่งเริ่มต้นไฟล์

ไวยากรณ์:

fp=fopen(ชื่อไฟล์, OpenMode);

โดยที่ fp เป็นตัวชี้ไปยังสตรีม (ตัวชี้ไฟล์)

ชื่อไฟล์เป็นตัวชี้ไปยังสตริงอักขระที่แสดงชื่อไฟล์ที่ถูกต้อง ซึ่งอาจรวมถึงข้อกำหนดเฉพาะของไฟล์ด้วย (รวมถึงสัญลักษณ์ อุปกรณ์ลอจิคัล, พาธไปยังไฟล์และชื่อไฟล์จริง);

OpenMode – ตัวชี้ไปที่บรรทัดของโหมดการเปิดไฟล์

ตัวอย่างเช่น:

fp=fopen("t.txt","r");

การเปิดไฟล์มีหลายโหมด

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


มีคำถามหรือไม่?

แจ้งการพิมพ์ผิด

ข้อความที่จะส่งถึงบรรณาธิการของเรา: