Ojective-C Programming – Read & Write File

ก็ช่วงนี้กำลังว่างหลังจาก โปรเจคของผมก็ได้เสร็จไปแล้วส่วนหนึ่ง กำลังรอเหมือนกันว่า ปีนี้จะมีโอกาสได้ไป WWDC กับเค้าบ้างหรือเปล่า ถ้าได้ไปก็คงจะดีเพราะเท่าที่ดูๆคิดว่า จุดใหญ่ๆของปีนี้น่าจะเป็น iphone นี่เหละ

ก็เขียน tutorial มาหลายๆเรื่องจนถึงเกือบจะสุดท้ายละ ก็น่าจะทำให้ใครหลายๆคนไปต่อยอดอ่าน cocoa ได้สบายๆหรือว่าเป็นจุดเริ่มในการเขียนโปรแกรมบน mac มั่งละ

สำหรับวันนี้ก็ต่อเรื่อง ของ File Managerment กันเลยเพราะว่าครั้งก่อนเป็นแค่การ ใช้งาน file เช่นการ copy file อะไรแบบนี้ แต่วันนี้เราจะมารู้จัก class ที่เกี่ยวกับ file เพิ่มเติมนั่นก็คือ NSData

NSData

ปกติแล้ว class ที่เอาไว้สำหรับจัดการ file ก็คือ NSFileManager  แต่ถ้าเราต้องการที่จะเขียนข้อมูลลง file หรืออ่านข้อมูลจาก file นั้นเราจะใช้ NSData เพื่อทำการอ่านและเขียนลง buffer เพื่อที่จะให้ NSFileManager จัดการเขียนข้อมูลจาก buffer ลง file จริงๆ

จากตัวอย่างข้างบน แบ่งออกเป็น 2 ส่วนคือ

  • Write Data

สำหรับการเขียนข้อมูลนั้น เมื่อทำการ สร้าง NSFileManager ขึ้นมาแล้ว สิ่งที่เราต้องทำต่อมาก็คือการสร้าง NSData เพื่อที่จะเก็บข้อมูลที่ต้องการเขียนไปยังไฟล์

เราก็ทำการส่ง buffer ไปให้ยัง tempData1 และบอกขนาด buffer ให้เรียบร้อย
หลังจากนั้นก็ให้ NSFileManager ที่เราประกาศไว้เป็นคนเขียน

เพียงเท่านี้เราก็สามารถเขียนข้อมูลลงไฟล์ได้แล้ว

  • Read Data

สำหรับการอ่านข้อมูลนั้นก็ทำงานคล้ายๆกับการเขียนคือ หลังจากประกาศ NSFileManager เสร็จก็ให้ประกาศ NSData ทำการอ่านข้อมูลจาก File มาเก็บไว้ จากตัวอย่าง เราทำการอ่านข้อมูลไปจนสิ้นสุดไฟล์เลย

แล้วหลังจากนั้น เราก็สร้าง buffer ขึ้นมาเพื่อที่จะนำข้อมูลออกมาจาก NSData อีกที

ก็เป็นตัวอย่างการเขียนและการอ่านไฟล์ แบบง่ายๆ ลองเอาไปหัดใช้กันดู ก็เหมือนเดิม มี source มาให้ด้วยก็โหลดไปลองเล่นกันดู

Download Foundation Framework File Read Write Source Files

4 thoughts on “Ojective-C Programming – Read & Write File”

  1. ขอบคุณครับ ตามอ่านมาถึงบทนี้แล้วยังไม่ได้กล่าวขอบคุณเลย ขอบคุณสำหรับน้ำใจงามๆที่แบ่งบันให้นะครับ เป็นกำลังใจให้

  2. จุดประสงค์คือต้องการอ่านไฟล์ จาก เวป ใช่ไหมครับ ?
    ถ้าเป็นแบบนี้เราจะไม่ใช้ NSFileHandle ครับ

    แบบนี้จะง่ายกว่า

    NSMutableString *fileData = [[NSMutableString alloc] initWithContentsOfURL:[NSURL fileURLWithPath:@”http://www.test.test.txt”]];

  3. ถ้าเราจะอ่านค่าจาก เวปไซด์ ได้ไหมครับ สามารถเปลี่ยน เป็น URL เลยได้ไหมครับหรือว่าต้องผ่านตัวอื่น เช่น http://www.test.test.txt แบบนี้สามารถใช้คำสั่งนี้เลยได้ไหมครับ

    fReadHandle = [NSFileHandle fileHandleForReadingAtPath:@”ตรงนี้”];

  4. ก็ขอบคุณมากนะครับ ขอให้เขียนอีกเยอะๆครับ ตอนนี้ผมกำลังต้วมเตี้ยมเป็นเด็กอนุบาลใน Cocoa
    และ Objective-C อยู่ครับจะตามไปนะครับ จาได้มีเพื่อนๆกัน

Leave a Reply