0Pricing
Swift Academy · บทเรียน

การอ่านและเขียนข้อมูล

บันทึกข้อมูลและสตริงลงในดิสก์

การอ่านและเขียนข้อมูล เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

การอ่านและเขียนข้อมูล

ชนิด Data ของ Foundation ใช้เก็บไบต์ดิบ และทั้ง String กับ Data ต่างก็รู้วิธีอ่านจากและเขียนไปยังที่อยู่ไฟล์

การเขียนข้อความ

write(to:atomically:encoding:) บันทึกข้อความลงในที่อยู่ไฟล์ การเขียนแบบอะตอมมิกจะใช้ไฟล์ชั่วคราวเพื่อป้องกันข้อมูลเสียหาย

import Foundation

let url = URL(fileURLWithPath: "/tmp/hello.txt")
try? "Hello, file!".write(to: url, atomically: true, encoding: .utf8)
print("Wrote string to disk")

การอ่านข้อความ

String(contentsOf:encoding:) โหลดไฟล์กลับเข้าสู่หน่วยความจำในรูปแบบข้อความ

import Foundation

let url = URL(fileURLWithPath: "/tmp/hello.txt")
if let text = try? String(contentsOf: url, encoding: .utf8) {
    print(text)
}

การทำงานกับข้อมูล

Data(contentsOf:) อ่านไฟล์ใด ๆ เป็นไบต์ดิบ เหมาะสำหรับรูปภาพ แฟ้มจัดเก็บ หรือรูปแบบไบนารี

import Foundation

let url = URL(fileURLWithPath: "/tmp/hello.txt")
if let data = try? Data(contentsOf: url) {
    print("Byte count: \(data.count)")
}

การเขียนข้อมูล

data.write(to:) บันทึกไบต์ลงในไฟล์ ใช้ร่วมกับการเข้ารหัสเพื่อจัดเก็บข้อความหรือข้อมูลที่ผ่านการทำให้เป็นอนุกรมรูปแบบใดก็ได้

import Foundation

let bytes = Data([0x48, 0x69])
let url = URL(fileURLWithPath: "/tmp/bytes.bin")
try? bytes.write(to: url)
print("Wrote raw data")

การแปลงข้อมูลเป็นข้อความ

แปลง Data เป็นข้อความด้วย String(data:encoding:) เมื่อทราบการเข้ารหัสไบต์ที่ใช้

import Foundation

let data = Data([0x48, 0x69])
if let s = String(data: data, encoding: .utf8) {
    print(s)
}

การเข้ารหัส JSON

ใช้ JSONEncoder เพื่อแปลงค่า Codable ให้เป็น Data ที่พร้อมบันทึกลงดิสก์

import Foundation

struct Note: Codable { let text: String }
let data = try? JSONEncoder().encode(Note(text: "hi"))
let url = URL(fileURLWithPath: "/tmp/note.json")
try? data?.write(to: url)
print("Saved JSON")

การถอดรหัส JSON

อ่านข้อมูลกลับมา แล้วถอดรหัสด้วย JSONDecoder ให้เป็นชนิดโมเดลของคุณ

import Foundation

struct Note: Codable { let text: String }
let url = URL(fileURLWithPath: "/tmp/note.json")
if let data = try? Data(contentsOf: url),
   let note = try? JSONDecoder().decode(Note.self, from: data) {
    print(note.text)
}

การเขียนแบบอะตอมมิก

ตัวเลือก atomically: true จะเขียนลงไฟล์ชั่วคราวแล้วเปลี่ยนชื่อไฟล์ ดังนั้นผู้อ่านจะไม่เห็นไฟล์ที่เขียนไม่เสร็จ

import Foundation

let url = URL(fileURLWithPath: "/tmp/safe.txt")
try? "important".write(to: url, atomically: true, encoding: .utf8)
print("Atomic write done")

การจัดการข้อผิดพลาด

การดำเนินการกับไฟล์อาจทำให้เกิดข้อผิดพลาดได้ ใช้ do/catch เพื่อจัดการกรณีไฟล์หายหรือปัญหาสิทธิ์ แทนที่จะปล่อยให้โปรแกรมหยุดทำงาน

import Foundation

let url = URL(fileURLWithPath: "/does/not/exist.txt")
do {
    _ = try String(contentsOf: url, encoding: .utf8)
} catch {
    print("Read failed: \(error.localizedDescription)")
}

การต่อท้ายเทียบกับการเขียนทับ

write(to:) พื้นฐานจะเขียนทับข้อมูล หากต้องการต่อท้าย ให้เปิด FileHandle แล้วเลื่อนไปยังจุดสิ้นสุดก่อนเขียน

import Foundation

let url = URL(fileURLWithPath: "/tmp/log.txt")
if let handle = try? FileHandle(forWritingTo: url) {
    handle.seekToEndOfFile()
    handle.write(Data("line\n".utf8))
    try? handle.close()
}
print("Appended")

ตรวจสอบความเข้าใจ

atomically: true รับประกันอะไรเมื่อเขียนข้อมูล

ทบทวน

คุณอ่านและเขียนข้อความด้วย String(contentsOf:) และ write(to:atomically:encoding:) จัดการไบต์ดิบด้วย Data บันทึกโมเดลผ่าน JSONEncoder/Decoder ใช้การเขียนแบบอะตอมมิก จัดการข้อผิดพลาด และต่อท้ายข้อมูลด้วย FileHandle บทเรียนถัดไปจะแนะนำการจัดการไดเรกทอรี

คำถามที่พบบ่อย

บทเรียน “การอ่านและเขียนข้อมูล” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การอ่านและเขียนข้อมูล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การอ่านและเขียนข้อมูล”

บันทึกข้อมูลและสตริงลงในดิสก์ คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การอ่านและเขียนข้อมูล” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. URL และเส้นทางไฟล์
  2. การอ่านและเขียนข้อมูล
  3. การจัดการไดเรกทอรี
  4. ไดเรกทอรีแซนด์บ็อกซ์ของแอป
← กลับไปที่ Swift Academy