आज आप सीखेंगे कि रूबी में फाइलें कैसे पढ़ें और लिखें ताकि आप सामग्री निकाल सकें, नई फाइलें बना सकें, और वह जानकारी ढूंढ सकें जिसकी आपको आवश्यकता है!

यहां हम क्या कवर करने जा रहे हैं:
विषयसूची
- 1 रूबी में फाइलें कैसे पढ़ें
- 2 रूबी में फाइल में कैसे लिखें
- 3 रूबी फाइल मेथड्स
- 4 डायरेक्टरी ऑपरेशन्स
- 5 FileUtils मॉड्यूल का उपयोग कैसे करें
- 6 सारांश
- 6.1 संबंधित
चलिए करते हैं!
रूबी में फाइलें कैसे पढ़ें
आप रूबी में इस तरह फाइल पढ़ सकते हैं:
- फाइल खोलें,
openमेथड के साथ। - फाइल पढ़ें, पूरी फाइल, लाइन दर लाइन, या बाइट्स की एक विशिष्ट मात्रा।
- फाइल बंद करें,
closeमेथड के साथ।
यहां विस्तार से प्रक्रिया है।
File क्लास का उपयोग करके फाइल खोलें:
file = File.open("users.txt")
परिणामस्वरूप आपको एक File ऑब्जेक्ट मिलेगा, लेकिन अभी तक फाइल की सामग्री नहीं।
अब:
आप फाइल की सामग्री को तीन तरीकों से पढ़ सकते हैं।
पहला, आप पूरी फाइल पढ़ सकते हैं।
इस तरह:
file_data = file.read # "user1\nuser2\nuser3\n"
यदि आप बहु-लाइन वाली फाइल के साथ काम कर रहे हैं तो आप या तो file_data को split कर सकते हैं, या नई लाइन वर्णों को हटाने के लिए readlines मेथड और chomp मेथड का उपयोग कर सकते हैं।
उदाहरण:
file_data = file.readlines.map(&:chomp) # ["user1", "user2", "user3"]
जब आप फाइल के साथ काम कर लेते हैं तो आप इसे close करके मेमोरी और सिस्टम संसाधनों को मुक्त करना चाहेंगे।
इस तरह:
file.close
फाइल को खोलने और बंद करने का एक विकल्प, आप File.read मेथड का उपयोग कर सकते हैं:
file_data = File.read("user.txt").split # ["user1", "user2", "user3"]
फाइल पढ़ने पर एक और टिप।
यदि आप एक फाइल को एक बार में एक लाइन प्रोसेस करना चाहते हैं, तो आप foreach मेथड का उपयोग कर सकते हैं।
उदाहरण:
File.foreach("users.txt") { |line| puts line }
पूरी फाइल को मेमोरी में पढ़ने के बजाय आप फाइल को एक बार में एक लाइन प्रोसेस कर पाएंगे, जो बड़ी फाइलों के लिए उपयोगी है।
रूबी में फाइल में कैसे लिखें
यदि आप रूबी का उपयोग करके फाइल में लिखना चाहते हैं:
- फाइल को राइट मोड में खोलें (“w” फ्लैग)
writeमेथड का उपयोग करके फाइल में डेटा जोड़ें- यदि आपने ब्लॉक संस्करण का उपयोग नहीं किया, तो
closeकरना याद रखें
उदाहरण:
File.open("log.txt", "w") { |f| f.write "#{Time.now} - User logged in\n" }
महत्वपूर्ण:
यह पिछली फाइल सामग्री को फिर से लिख देगा!
यदि आप फाइल में नई सामग्री जोड़ना चाहते हैं, तो “w” (राइट) फ्लैग के बजाय “a” (अपेंड) फ्लैग का उपयोग करें।
एक शॉर्टकट है File.write का उपयोग करना:
File.write("log.txt", "data...")
इस मेथड को अपेंड मोड में उपयोग करने के लिए:
File.write("log.txt", "data...", mode: "a")
यह रूबी में सिर्फ एक लाइन कोड में फाइल में लिखने का सबसे आसान तरीका है 🙂
एक और बात…
यदि आप एक सरणी को फाइल में लिखना चाहते हैं तो आपको पहले इसे स्ट्रिंग में बदलना होगा।
यहां कैसे:
File.write("log.txt", [1,2,3].join("\n"), mode: "a")
ऑब्जेक्ट को स्ट्रिंग में बदलने की इस प्रक्रिया को सीरियलाइज़ेशन कहा जाता है।
रूबी फाइल मेथड्स
आप फाइलों के साथ पढ़ने और लिखने के अलावा अन्य चीजें कर सकते हैं।
उदाहरण के लिए, आप जानना चाह सकते हैं कि कोई फाइल मौजूद है या नहीं या वर्तमान डायरेक्टरी के लिए फाइलों की सूची प्राप्त करना चाह सकते हैं।
आप निम्न जैसे मेथड्स का उपयोग करने जा रहे हैं:
- rename
- size
- exists?
- extname
- basename
- dirname
- directory?
- file?
आइए कुछ उदाहरण देखते हैं:
# फाइल का नाम बदलना
File.rename("old-name.txt", "new-name.txt")
# फाइल साइज बाइट्स में
File.size("users.txt")
# क्या यह फाइल पहले से मौजूद है?
File.exists?("log.txt")
# फाइल एक्सटेंशन प्राप्त करें, यह तब भी काम करता है जब फाइल मौजूद न हो
File.extname("users.txt") # => ".txt"
# डायरेक्टरी भाग के बिना फाइल नाम प्राप्त करें
File.basename("/tmp/ebook.pdf") # => "ebook.pdf"
# इस फाइल का पथ प्राप्त करें, फाइल नाम के बिना
File.dirname("/tmp/ebook.pdf") # => "/tmp"
# क्या यह वास्तव में एक फाइल है या डायरेक्टरी?
File.directory?("cats")
अंतिम उदाहरण अधिक समझ में आता है यदि आप डायरेक्टरी लिस्टिंग की सामग्री के माध्यम से लूप कर रहे हैं।
def find_files_in_current_directory
entries = Dir.entries(".")
entries.reject { |entry| File.directory?(entry) }
end
आप फाइल के लिए स्टैट्स भी प्राप्त कर सकते हैं, जैसे फाइल साइज, अनुमतियाँ, निर्माण तिथि, आदि:
File.stat("/tmp")
डायरेक्टरी ऑपरेशन्स
Dir.glob का उपयोग करके आप उन सभी फाइलों की सूची प्राप्त कर सकते हैं जो एक निश्चित पैटर्न से मेल खाती हैं।
यहां कुछ उदाहरण हैं:
# वर्तमान डायरेक्टरी में सभी फाइलें
Dir.glob("*")
# नाम में "spec" वाली सभी फाइलें
Dir.glob("*spec*")
# सभी रूबी फाइलें
Dir.glob("*.rb")
कोड की यह एक लाइन रूबी में सभी फाइलों को वर्तमान डायरेक्टरी से शुरू करके रिकर्सिवली सूचीबद्ध करेगी:
Dir.glob("**/**")
यदि आप केवल डायरेक्टरीज़ खोजना चाहते हैं तो इसका उपयोग करें:
Dir.glob("**/**/")
Dir क्लास का उपयोग करके वर्तमान कार्यशील डायरेक्टरी प्रिंट करना भी संभव है:
Dir.pwd
जांचें कि डायरेक्टरी खाली है या नहीं:
Dir.empty?("/tmp") # false
जांचें कि डायरेक्टरी मौजूद है या नहीं:
Dir.exists?("/home/jesus") # true
नई डायरेक्टरी बनाएं:
Dir.mkdir("/tmp/testing")
mktmpdir के साथ अस्थायी डायरेक्टरी बनाएं:
Dir.mktmpdir do |dir| File.write(dir + "/log.txt", "test") end
FileUtils मॉड्यूल का उपयोग कैसे करें
कुछ अतिरिक्त फाइल हैंडलिंग उपयोगिताएं हैं जिन्हें आप FileUtils मॉड्यूल के भीतर एक्सेस कर सकते हैं।
उदाहरण के लिए, आप फाइलों की तुलना कर सकते हैं, एक फाइल को टच कर सकते हैं ( अंतिम एक्सेस और संशोधन समय अपडेट करने के लिए), या cp_r के साथ फाइलों और डायरेक्टरीज़ को कॉपी कर सकते हैं।
इस तरह:
require 'fileutils'
FileUtils.compare_file("a.txt", "b.txt")
FileUtils.touch("/tmp/lock")
FileUtils.cp_r("data", "backup")
Btw cp_r में “r” “रिकर्सिव” के लिए है।
सारांश
आपने File.read और File.write जैसे बिल्ट-इन मेथड्स का उपयोग करके रूबी में फाइलों और फ़ोल्डर्स को प्रबंधित करना सीखा है।
पढ़ने के लिए धन्यवाद!