Saturday, December 14, 2013

โปรแกรมภาษา C++ : ตอนการเก็บข้อมูลลงใน Disk แบบ Binary File

การเขียนโปรแกรมภาษา c++ วันนี้จะนำเสนอ วิธีการเก็บข้อมูลลง Disk แบบ Binary File ซึ่งจะมีจุดเด่นในด้านการจัดการและการเข้าถึงข้อมูลได้ง่ายและเป็นระบบกว่า การเก็บข้อมูลลงใน Disk แบบ Text File มาดู Code  การบันทึกข้อมูลแบบ Binary File กันครับ


เมื่อคอมไพล์โปรแกรมท่านจะได้ไฟล์ DATA.bin มาหนึ่งไฟล์ แต่จะไม่สามารถใช้ Nodepad เปิดดูข้อมูลในไฟล์นี้ได้นะครับ เนื่องจากไฟล์ DATA.bin มีโครงสร้างการเก็บที่ Nodepad ไม่รู้จักนั่นเอง และเมื่อตรวจสอบขนาดไฟล์จะพบว่ามีขนาดเท่ากับ 4 ไบต์ เนื่องจากข้อมูลที่เราเก็บลงไปเป็นชนิด int ซึ่งมีขนาดเท่ากับ 4 ไบต์ 
ฟังก์ชั่น fwrite เป็นฟังก์ชันที่ใช้บันทึกข้อมูลลงไฟล์ โดยมีรูปแบบของฟังก์ชันดังนี้
พารามิเตอร์ตัวแรกเป็น address ของตัวแปรที่ต้องการเข้าถึงข้อมูลที่จะบันทึก
พารามิเตอร์ตัวที่สองเป็นขนาดของตัวแปรที่ต้องการบันทึกในแต่ละครั้ง โดยเราจะใช้ฟังก์ชัน Sizeof ช่วยคืนค่าขนาดของตัวแปรที่เราต้องการบันทึก
พารามิเตอร์ตัวสุดท้ายเป็น pointer ของ object FILE ที่ต้องการบันทึก

สมมุติ เราต้องการเก็บข้อมูลของตัวแปร int temp ลงไปในไฟล์ต่อจาก num เราจะแก้ไข code ดังนี้โดยไฟล์ DATA.bin จะมีขนาดเท่ากับ 8 ไบต์ เนื่องจากเก็บข้อมูลชนิด int ไว้ 2 ชุดนั่นเอง โดยจะจัดเรียงจากตัวแปร num และ temp ตามลำดับ


เราจะลองศึกษา code โปรแกรม ที่บันทึกข้อมูลแบบอาเรย์กันครับซึ่งไม่มีความยุ่งยากเลย ดังนี้


ท่านจะได้ไฟล์ DATA.bin ที่บรรจุตัวเลข 100 ตัว ตั้งแต่เลข 1-100 ซึ่งเรียงกันอยู่ในอาเรย์ครับ ส่วนขนาดของไฟล์ก็จะเท่ากับ 4*100 = 400 ไบต์ นั่นเอง 
ในบทความนี้ก็ได้นำเสนอการบันทึกข้อมูลลงไฟล์แบบ Binary File เรียบร้อยแล้วนะครับ ซึ่งที่สำคัญท่านจะพบว่า ไฟลืที่เราบันทึกข้อมูลจะมีความปลอดภัยสูง เนื่องจากเราจะไม่สามารถเปิดอ่านและแก้ไขข้อมูลในไฟล์ดังกล่าวได้เลยหากไๆม่ทราบโครงสร้างของการจัดเรียงข้อมูลในไฟล์ ซึ่งในบทความถัดไปจะนำเสนอการอ่านหรือโหลดข้อมูลในไฟล์ดังกล่าวครับ รวมถึงจะนำเสนอการนำไปประยุกต์อ่านข้อมูลไฟล์เสียงกันครับ

No comments :

Post a Comment