परिचय: Swift में फ़ाइल सिस्टम के साथ कार्य क्यों महत्वपूर्ण है
iOS या macOS पर कोई भी एप्लिकेशन देर-सबेर उपयोगकर्ता के डिवाइस पर डेटा सहेजने की आवश्यकता का सामना करता है। चाहे वह इमेज कैशिंग हो, दस्तावेज़ डाउनलोड करना हो या सेटिंग्स सहेजना हो — Swift में फ़ाइल सिस्टम के साथ कार्य करना प्रत्येक डेवलपर के लिए एक मौलिक कौशल है। इस लेख में हम व्यावहारिक रूप से समझेंगे कि FileManager का उपयोग कैसे करें, निर्देशिकाओं के साथ कैसे कार्य करें, फ़ाइलों को कैसे पढ़ें और लिखें, और उनकी विशेषताओं का प्रबंधन कैसे करें। आपको तैयार कोड उदाहरण मिलेंगे जिन्हें आप अपने प्रोजेक्ट में तुरंत लागू कर सकते हैं।
मुख्य उपकरण: FileManager और URL
Swift में फ़ाइल सिस्टम के साथ कार्य करने के लिए केंद्रीय वर्ग FileManager है। यह iOS और macOS दोनों पर फ़ाइल सिस्टम के साथ बातचीत के लिए एक एकीकृत इंटरफ़ेस प्रदान करता है। दूसरा प्रमुख घटक URL है, जिसका उपयोग फ़ाइलों और निर्देशिकाओं के पथ निर्दिष्ट करने के लिए किया जाता है।
मानक निर्देशिकाएँ प्राप्त करना
सबसे पहली चीज़ जो आपको जाननी चाहिए वह है सिस्टम निर्देशिकाओं के पथ प्राप्त करना: Documents, Library, Caches और Temporary। यह इस प्रकार किया जाता है:
import Foundation
let fileManager = FileManager.default
// Documents निर्देशिका — उपयोगकर्ता डेटा के लिएguard let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { fatalError("Documents निर्देशिका प्राप्त करने में विफल")}print("Documents: \\(documentsURL.path)")
// Caches निर्देशिका — अस्थायी कैश किए गए डेटा के लिएlet cachesURL = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first!print("Caches: \\(cachesURL.path)")
// अस्थायी निर्देशिका — उन फ़ाइलों के लिए जिन्हें कभी भी हटाया जा सकता हैlet tempURL = fileManager.temporaryDirectoryprint("Temp: \\(tempURL.path)")महत्वपूर्ण: iOS पर, एप्लिकेशन केवल अपने सैंडबॉक्स (sandbox) में डेटा लिख सकता है। सिस्टम फ़ाइलों या अन्य एप्लिकेशन की फ़ाइलों तक पहुँच निषिद्ध है।
फ़ाइलें बनाना, पढ़ना और लिखना
अब व्यावहारिक संचालन पर आते हैं। आइए देखें कि फ़ाइलें कैसे बनाएँ, उनमें डेटा कैसे लिखें और उन्हें वापस कैसे पढ़ें।
फ़ाइल में डेटा लिखना
सबसे सरल तरीका स्ट्रिंग या Data के लिए write(to:) विधि का उपयोग करना है। लेकिन विश्वसनीयता के लिए हमेशा त्रुटि प्रबंधन का उपयोग करें:
let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!let fileURL = documentsURL.appendingPathComponent("example.txt")
let content = "Hello, Swift! यह एक परीक्षण फ़ाइल है।"
do { try content.write(to: fileURL, atomically: true, encoding: .utf8) print("फ़ाइल सफलतापूर्वक बनाई गई: \\(fileURL.lastPathComponent)")} catch { print("लेखन त्रुटि: \\(error.localizedDescription)")}फ़ाइल से डेटा पढ़ना
पढ़ना समान रूप से किया जाता है — String(contentsOf:) कंस्ट्रक्टर या Data विधियों का उपयोग करके:
do { let savedContent = try String(contentsOf: fileURL, encoding: .utf8) print("फ़ाइल की सामग्री: \\(savedContent)")} catch { print("पढ़ने में त्रुटि: \\(error.localizedDescription)")}बाइनरी डेटा (इमेज, आर्काइव) के साथ कार्य
बाइनरी फ़ाइलों के लिए Data प्रकार का उपयोग करें:
// बाइनरी डेटा लिखनाlet imageData = UIImage(named: "example.png")?.pngData()let imageURL = documentsURL.appendingPathComponent("image.png")
do { try imageData?.write(to: imageURL)} catch { print("इमेज लिखने में त्रुटि: \\(error)")}
// बाइनरी डेटा पढ़नाif let loadedData = try? Data(contentsOf: imageURL) { let loadedImage = UIImage(data: loadedData) print("इमेज लोड की गई: \\(loadedImage != nil)")}निर्देशिकाओं और फ़ाइलों का प्रबंधन
केवल लिखना और पढ़ना पर्याप्त नहीं है। अक्सर उप-निर्देशिकाएँ बनाना, फ़ाइलों को स्थानांतरित करना, कॉपी करना या हटाना आवश्यक होता है।