आज आप रूबी में फाइलों को पढ़ना और लिखना सीखेंगे ताकि आप सामग्री को निकाल सकें, नई फाइलें बना सकें और अपनी जरूरत की जानकारी पा सकें!
यहां बताया गया है कि हम क्या कवर करने जा रहे हैं :
सामग्री
- 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"
यदि आप ऐसी फ़ाइल के साथ काम कर रहे हैं जिसमें कई लाइनें हैं तो आप split
. कर सकते हैं file_data
, या 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")
किसी वस्तु को एक स्ट्रिंग में बदलने की इस प्रक्रिया को क्रमांकन कहा जाता है।
रूबी फ़ाइल तरीके
आप फ़ाइलों को पढ़ने और लिखने के अलावा अन्य काम भी कर सकते हैं।
उदाहरण के लिए, आप जानना चाहेंगे कि कोई फ़ाइल मौजूद है या नहीं या वर्तमान निर्देशिका के लिए फाइलों की सूची प्राप्त करने के लिए।
आप जैसे तरीकों का उपयोग करने जा रहे हैं :
- नाम बदलें
- आकार
- मौजूद है?
- विस्तारनाम
- बेसनाम
- दिरनाम
- निर्देशिका?
- फ़ाइल?
आइए कुछ उदाहरण देखें :
# Renaming a file File.rename("old-name.txt", "new-name.txt") # File size in bytes File.size("users.txt") # Does this file already exist? File.exists?("log.txt") # Get the file extension, this works even if the file doesn't exists File.extname("users.txt") # => ".txt" # Get the file name without the directory part File.basename("/tmp/ebook.pdf") # => "ebook.pdf" # Get the path for this file, without the file name File.dirname("/tmp/ebook.pdf") # => "/tmp" # Is this actually a file or a directory? File.directory?("cats")
अंतिम उदाहरण अधिक समझ में आता है यदि आप निर्देशिका सूची की सामग्री के माध्यम से लूपिंग कर रहे हैं।
def find_files_in_current_directory entries = Dir.entries(".") entries.reject { |entry| File.directory?(entry) } end
आप फ़ाइल के आँकड़े भी प्राप्त कर सकते हैं, जैसे फ़ाइल का आकार, अनुमतियाँ, निर्माण तिथि, आदि:
File.stat("/tmp")
निर्देशिका संचालन
Dir.glob का उपयोग करना आप एक निश्चित पैटर्न से मेल खाने वाली सभी फाइलों की सूची प्राप्त कर सकते हैं।
यहां कुछ उदाहरण दिए गए हैं:
# All files in current directory Dir.glob("*") # All files containing "spec" in the name Dir.glob("*spec*") # All ruby files 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")
cp_r
. में "r" को बीटीडब्ल्यू करें "पुनरावर्ती" के लिए खड़ा है।
सारांश
आपने रूबी में फ़ाइलों और फ़ोल्डरों को प्रबंधित करने का तरीका सीखा है, जैसे अंतर्निहित विधियों जैसे File.read
. का उपयोग करके और File.write
।
पढ़ने के लिए धन्यवाद!