अमृत - फाइल आईओ
फ़ाइल IO किसी भी प्रोग्रामिंग भाषा का एक अभिन्न हिस्सा है क्योंकि यह भाषा को फाइल सिस्टम पर फाइलों के साथ बातचीत करने की अनुमति देता है। इस अध्याय में, हम दो मॉड्यूल - पथ और फ़ाइल पर चर्चा करेंगे।
पथ मॉड्यूल
pathमॉड्यूल एक बहुत छोटा मॉड्यूल है जिसे फाइलसिस्टम संचालन के लिए सहायक मॉड्यूल के रूप में माना जा सकता है। फ़ाइल मॉड्यूल में अधिकांश कार्य तर्कों के रूप में पथों की अपेक्षा करते हैं। आमतौर पर, वे रास्ते नियमित बायनेरिज़ होंगे। पथ मॉड्यूल ऐसे रास्तों के साथ काम करने के लिए सुविधाएं प्रदान करता है। पथ मॉड्यूल से फ़ंक्शन का उपयोग करना केवल बायनेरिज़ में हेरफेर करने के विरोध के रूप में पसंद किया जाता है क्योंकि पथ मॉड्यूल पारदर्शी रूप से विभिन्न ऑपरेटिंग सिस्टम का ख्याल रखता है। यह देखा जाना चाहिए कि एलिक्सिर फ़ाइल संचालन करते समय विंडोज पर स्लैश (/) को बैकस्लैश (\) में स्वचालित रूप से बदल देगा।
पथ मॉड्यूल को और समझने के लिए निम्नलिखित उदाहरण पर विचार करते हैं -
IO.puts(Path.join("foo", "bar"))
जब उपरोक्त कार्यक्रम चलाया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
foo/bar
बहुत सारे तरीके हैं जो पथ मॉड्यूल प्रदान करते हैं। आप यहां विभिन्न तरीकों पर एक नजर डाल सकते हैं । यदि आप कई फ़ाइल हेरफेर ऑपरेशन कर रहे हैं, तो इन विधियों का अक्सर उपयोग किया जाता है।
फ़ाइल मॉड्यूल
फ़ाइल मॉड्यूल में फ़ंक्शंस होते हैं जो हमें IO उपकरणों के रूप में फ़ाइलों को खोलने की अनुमति देते हैं। डिफ़ॉल्ट रूप से, फाइलें बाइनरी मोड में खोली जाती हैं, जिसके लिए डेवलपर्स को विशिष्ट का उपयोग करने की आवश्यकता होती हैIO.binread तथा IO.binwriteIO मॉड्यूल से कार्य करता है। हमें एक फाइल बनाने के लिए कहा जाता हैnewfile और इसके लिए कुछ डेटा लिखें।
{:ok, file} = File.read("newfile", [:write])
# Pattern matching to store returned stream
IO.binwrite(file, "This will be written to the file")
यदि आप हमारे द्वारा लिखी गई फ़ाइल को खोलने के लिए जाते हैं, तो सामग्री निम्नलिखित तरीके से प्रदर्शित की जाएगी -
This will be written to the file
आइए अब समझते हैं कि फ़ाइल मॉड्यूल का उपयोग कैसे करें।
एक फ़ाइल खोलना
फ़ाइल खोलने के लिए, हम निम्नलिखित 2 कार्यों में से किसी एक का उपयोग कर सकते हैं -
{:ok, file} = File.open("newfile")
file = File.open!("newfile")
आइए अब हम इस अंतर को समझते हैं File.open समारोह और File.open!() समारोह।
File.openफ़ंक्शन हमेशा एक टपल देता है। यदि फ़ाइल सफलतापूर्वक खोली गई है, तो यह टुपल में पहला मान देता है:okऔर दूसरा मान io_device के प्रकार का शाब्दिक है। यदि कोई त्रुटि होती है, तो वह पहले मूल्य के साथ एक टपल लौटाएगा:error और कारण के रूप में दूसरा मूल्य।
File.open!() दूसरी ओर फ़ंक्शन वापस आ जाएगा io_deviceयदि फ़ाइल सफलतापूर्वक खोली जाती है तो यह एक त्रुटि उत्पन्न करेगी। नोट: यह वह पैटर्न है जिसका हम चर्चा करने जा रहे सभी फ़ाइल मॉड्यूल कार्यों में अनुसरण करते हैं।
हम उन मोड्स को भी निर्दिष्ट कर सकते हैं जिनमें हम इस फाइल को खोलना चाहते हैं। फ़ाइल को केवल पढ़ने के लिए और utf-8 एन्कोडिंग मोड में खोलने के लिए, हम निम्नलिखित कोड का उपयोग करते हैं -
file = File.open!("newfile", [:read, :utf8])
एक फ़ाइल के लिए लेखन
हमारे पास फ़ाइलों को लिखने के दो तरीके हैं। फाइल मॉड्यूल से राइटिंग फंक्शन का उपयोग करते हुए पहले देखें।
File.write("newfile", "Hello")
लेकिन इसका उपयोग तब नहीं किया जाना चाहिए जब आप एक ही फाइल में कई राइट्स बना रहे हों। हर बार इस फ़ंक्शन को लागू करने के बाद, एक फ़ाइल डिस्क्रिप्टर खोला जाता है और फ़ाइल पर लिखने के लिए एक नई प्रक्रिया शुरू की जाती है। यदि आप एक लूप में एकाधिक लेखन कर रहे हैं, तो फ़ाइल को खोलेंFile.openऔर IO मॉड्यूल में विधियों का उपयोग करके इसे लिखें। आइए हम इसे समझने के लिए एक उदाहरण पर विचार करें -
#Open the file in read, write and utf8 modes.
file = File.open!("newfile_2", [:read, :utf8, :write])
#Write to this "io_device" using standard IO functions
IO.puts(file, "Random text")
आप अन्य IO मॉड्यूल विधियों का उपयोग कर सकते हैं जैसे IO.write तथा IO.binwrite io_device के रूप में खोली गई फ़ाइलों को लिखने के लिए।
एक फ़ाइल से पढ़ना
हमारे पास फ़ाइलों से पढ़ने के दो तरीके हैं। फाइल मॉड्यूल से रीड फंक्शन का उपयोग करते हुए पहले देखें।
IO.puts(File.read("newfile"))
इस कोड को चलाते समय, आपको पहले तत्व के साथ एक ट्यूपल प्राप्त करना चाहिए :ok और दूसरा नयाफाइल की सामग्री के रूप में
हम भी उपयोग कर सकते हैं File.read! हमारे पास लौटाई गई फ़ाइलों की सामग्री प्राप्त करने के लिए कार्य करें।
ओपन फाइल बंद करना
जब भी आप File.open फ़ंक्शन का उपयोग करके किसी फ़ाइल को खोलते हैं, तो इसका उपयोग करने के बाद, आपको इसका उपयोग करके इसे बंद कर देना चाहिए File.close कार्य -
File.close(file)