Swift में फ़ाइल सिस्टम के साथ काम करना: शुरुआती लोगों के लिए
\n\nफ़ाइल सिस्टम के साथ काम करना iOS और macOS के तहत एप्लिकेशन विकसित करते समय प्रमुख कार्यों में से एक है। चाहे वह उपयोगकर्ता डेटा को सहेजना हो, इमेज को कैश करना हो या दस्तावेज़ों को निर्यात करना हो, आपको अनिवार्य रूप से फ़ाइलों और फ़ोल्डरों के साथ बातचीत करनी होगी। इस लेख में, हम फ़ाइल सिस्टम के साथ काम करने के लिए Swift के मुख्य टूल को समझेंगे, जिसमें FileManager, निर्देशिकाओं के पथ, फ़ाइलों का निर्माण, पढ़ना, लिखना और हटाना शामिल है। यह सामग्री शुरुआती डेवलपर्स के लिए है, इसलिए सभी उदाहरण यथासंभव सरल और समझने योग्य होंगे।
मूल बातें: FileManager और पथ
\n\nSwift में फ़ाइल सिस्टम के साथ काम करने के लिए मुख्य वर्ग FileManager है। यह मानक सिस्टम कॉल पर एक रैपर है, जो फ़ाइलों और फ़ोल्डरों के प्रबंधन के लिए एक सुविधाजनक इंटरफ़ेस प्रदान करता है। अक्सर इसका सिंगलटन उपयोग किया जाता है:
let fileManager = FileManager.default\n\nचूंकि iOS और macOS में एप्लिकेशन एक पृथक वातावरण (सैंडबॉक्स) में काम करते हैं, आपको यह जानना होगा कि डेटा कहाँ सहेजा जा सकता है। मुख्य निर्देशिकाएँ जिन तक एप्लिकेशन की पहुँच है:
\n\n- \n
- Documents — उपयोगकर्ता दस्तावेज़ों और डेटा के लिए जो स्टार्टअप के बीच सहेजे जाने चाहिए। \n
- Caches — अस्थायी फ़ाइलों के लिए, जिन्हें सिस्टम स्थान खाली करने के लिए हटा सकता है। \n
- Temporary — अस्थायी फ़ाइलों के लिए, जो डिवाइस के अगले रीबूट पर हटा दी जाएंगी। \n
- Library/Application Support — उन डेटा के लिए जो सीधे उपयोगकर्ता के लिए उपलब्ध नहीं होने चाहिए, लेकिन सहेजे जाने चाहिए। \n
आवश्यक निर्देशिका का पथ urls(for:in:) विधि का उपयोग करके प्राप्त किया जा सकता है:
// Documents फ़ोल्डर का पथ प्राप्त करें\nlet documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!\nprint("Documents path: \\(documentsURL.path)")\n\n// Caches फ़ोल्डर का पथ प्राप्त करें\nlet cachesURL = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first!\nprint("Caches path: \\(cachesURL.path)")\n\n// अस्थायी फ़ोल्डर का पथ प्राप्त करें\nlet tempURL = fileManager.temporaryDirectory\nprint("Temp path: \\(tempURL.path)")\n\nध्यान दें: विधि URL की एक सरणी लौटाती है (यदि कई पथ मौजूद हैं), लेकिन उपयोगकर्ता निर्देशिकाओं के लिए आमतौर पर पहला तत्व लिया जाता है। आधुनिक Swift में, स्ट्रिंग पथ के बजाय URL का उपयोग करने की अनुशंसा की जाती है, क्योंकि यह अधिक सुरक्षित और सुविधाजनक है।
फ़ाइलें बनाना और लिखना
\n\nअब जब हम जानते हैं कि फ़ाइलों को कहाँ सहेजा जा सकता है, तो आइए सीखें कि उन्हें कैसे बनाया जाए और उनमें डेटा कैसे लिखा जाए। टेक्स्ट डेटा लिखने के लिए, String वर्ग की write(to:atomically:encoding:) विधि का उपयोग करना सबसे आसान है:
// Documents फ़ोल्डर में फ़ाइल का पथ बनाएँ\nlet fileURL = documentsURL.appendingPathComponent("myFile.txt")\n\n// लिखने के लिए टेक्स्ट\nlet content = "नमस्ते, दुनिया! यह Swift में मेरी पहली फ़ाइल है।"\n\ndo {\n // स्ट्रिंग को फ़ाइल में लिखें\n try content.write(to: fileURL, atomically: true, encoding: .utf8)\n print("फ़ाइल सफलतापूर्वक बनाई गई: \\(fileURL.path)")\n} catch {\n print("फ़ाइल लिखने में त्रुटि: \\(error.localizedDescription)")\n}\n\nपैरामीटर atomically: true का अर्थ है कि डेटा पहले एक अस्थायी फ़ाइल में लिखा जाएगा, फिर लक्ष्य फ़ाइल का नाम बदल दिया जाएगा। यह विफलता की स्थिति में फ़ाइल को दूषित होने से बचाता है। बाइनरी डेटा (जैसे, इमेज) के लिए, Data का उपयोग किया जा सकता है:
// बाइनरी डेटा बनाएँ (उदाहरण के लिए, बाइट्स की एक सरणी)\nlet data = Data([0x48, 0x65, 0x6C, 0x6C, 0x6F]) // ASCII में "Hello"\n\nlet binaryFileURL = documentsURL.appendingPathComponent("data.bin")\n\ndo {\n try data.write(to: binaryFileURL, options: .atomic)\n print("बाइनरी फ़ाइल बनाई गई")\n} catch {\n print("त्रुटि: \\(error)")\n}\n\n