العمل مع نظام الملفات في Swift: دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة في العمل مع نظام الملفات في Swift



غالبًا ما يتطلب التطوير لنظامي iOS وmacOS التفاعل مع نظام ملفات الجهاز. سواء كان حفظ بيانات المستخدم، أو تخزين الصور مؤقتًا، أو تصدير المستندات — فإن القدرة على العمل مع الملفات والمجلدات هي مهارة أساسية لأي مطور Swift. في هذه المقالة، سنشرح بالتفصيل كيفية استخدام FileManager وURL وData لتنفيذ جميع العمليات الأساسية مع نظام الملفات.



سنغطي إنشاء الملفات وقراءتها وكتابتها وحذفها، بالإضافة إلى التنقل بين الدلائل. جميع أمثلة الكود مكتوبة بلغة Swift 5 ومناسبة لمشاريع iOS وmacOS.



المكونات الأساسية: FileManager وURL



في Swift، الفئة المركزية للعمل مع نظام الملفات هي FileManager. توفر هذه الفئة طرقًا لإدارة الملفات والدلائل وخصائصها. لتحديد المسارات، يتم استخدام هيكل URL، وهو بديل أكثر أمانًا وحداثة من استخدام السلاسل النصية.



الحصول على الدلائل القياسية



أول ما يجب معرفته هو كيفية الحصول على مسارات الدلائل النظامية القياسية. بالنسبة لنظام iOS، هذه عادةً هي Documents وLibrary/Caches وtmp.



import Foundation

let fileManager = FileManager.default

// دليل Documentsguard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { fatalError("تعذر الحصول على دليل Documents")}print("Documents: \\(documentsURL.path)")

// دليل Cachesguard let cachesURL = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first else { fatalError("تعذر الحصول على دليل Caches")}print("Caches: \\(cachesURL.path)")

// الدليل المؤقتlet tempURL = fileManager.temporaryDirectoryprint("Temp: \\(tempURL.path)")


إنشاء وكتابة الملفات



إنشاء ملف في Swift هو مزيج من إنشاء المسار وكتابة البيانات. سنستعرض طريقتين رئيسيتين.



كتابة البيانات النصية



func createTextFile() {    guard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }        let fileURL = documentsURL.appendingPathComponent("example.txt")    let content = "مرحبًا بالعالم! هذا ملف اختباري."        do {        try content.write(to: fileURL, atomically: true, encoding: .utf8)        print("تم إنشاء الملف بنجاح في المسار: \\(fileURL.path)")    } catch {        print("خطأ في كتابة الملف: \\(error.localizedDescription)")    }}


كتابة البيانات الثنائية (الصور، الأرشيفات)



func createBinaryFile() {    guard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }        let fileURL = documentsURL.appendingPathComponent("data.bin")    let data = Data([0x48, 0x65, 0x6C, 0x6C, 0x6F]) // "Hello" بالنظام الست عشري        do {        try data.write(to: fileURL, options: .atomic)        print("تم إنشاء الملف الثنائي")    } catch {        print("خطأ: \\(error)")    }}


إنشاء الدلائل



func createDirectory() {    guard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }        let newDirURL = documentsURL.appendingPathComponent("MyFolder")        do {        try fileManager.createDirectory(at: newDirURL, withIntermediateDirectories: true, attributes: nil)        print("تم إنشاء الدليل: \\(newDirURL.path)")    } catch {        print("خطأ في إنشاء الدليل: \\(error)")    }}


قراءة الملفات والتحقق منها



بعد إنشاء الملفات، يجب أن نكون قادرين على قراءتها والتحقق من وجودها.



التحقق من وجود ملف



func fileExists(at url: URL) -> Bool {    return fileMan                

المدونات

توصيات الكتب