রুবি ফাইল হ্যান্ডলিংয়ের জন্য শক্তিশালী এবং সহজ উপায় প্রদান করে। এটি ফাইল খুলতে, পড়তে, লিখতে এবং মুছতে সাহায্য করে। রুবি স্ট্যান্ডার্ড লাইব্রেরির মধ্যে File এবং IO ক্লাস ব্যবহার করে ফাইলের সাথে ইন্টারঅ্যাক্ট করা যায়।
এখানে ফাইল হ্যান্ডলিংয়ের কিছু গুরুত্বপূর্ণ ধারণা এবং উদাহরণ দেওয়া হলো।
১. ফাইল খোলা (Opening a File)
রুবিতে একটি ফাইল খুলতে File.open মেথড ব্যবহার করা হয়। এই মেথডের মাধ্যমে আপনি একটি ফাইল পড়তে, লিখতে অথবা এডিট করতে পারেন।
file = File.open("example.txt", "r") # "r" stands for read modeএখানে "r" হল মোড, যা নির্দেশ করে ফাইলটি পড়ার জন্য খোলা হয়েছে। এছাড়াও অন্যান্য কিছু মোড রয়েছে, যেমন:
"w": লেখার জন্য ফাইল খোলা। যদি ফাইলটি আগে থেকে থাকে, তা মুছে ফেলা হবে।"a": ফাইলের শেষে নতুন লেখা অ্যাড করা।"r+": ফাইল পড়া এবং লেখার জন্য।"w+": ফাইল লেখার জন্য, যদি ফাইলটি না থাকে তবে নতুন ফাইল তৈরি করবে।
২. ফাইল পড়া (Reading a File)
ফাইলের বিভিন্ন পদ্ধতিতে পড়া সম্ভব। কিছু উদাহরণ:
১. read মেথড:
file = File.open("example.txt", "r")
content = file.read
puts content
file.closeএখানে, read মেথডের মাধ্যমে পুরো ফাইলের কনটেন্ট একবারে পড়া হয়। file.close দিয়ে ফাইলটি বন্ধ করা হয়।
২. each_line মেথড:
file = File.open("example.txt", "r")
file.each_line do |line|
puts line
end
file.closeএখানে, each_line মেথডের মাধ্যমে ফাইলের প্রতিটি লাইনে লুপ করা হয়েছে এবং প্রতিটি লাইনের কনটেন্ট প্রিন্ট করা হয়েছে।
৩. readlines মেথড:
file = File.open("example.txt", "r")
lines = file.readlines
puts lines
file.closeএখানে, readlines মেথডের মাধ্যমে ফাইলের প্রতিটি লাইন একটি অ্যারেতে সঞ্চিত হচ্ছে।
৩. ফাইল লেখা (Writing to a File)
ফাইলের মধ্যে নতুন ডেটা লেখার জন্য "w", "a", বা "w+" মোড ব্যবহার করা হয়।
১. write মেথড:
file = File.open("output.txt", "w")
file.write("Hello, Ruby!")
file.closeএখানে, "output.txt" ফাইলে "Hello, Ruby!" লেখা হয়েছে।
২. puts মেথড:
file = File.open("output.txt", "w")
file.puts("Hello, Ruby!")
file.puts("Welcome to file handling.")
file.closeputs মেথড একে একে নতুন লাইনে লেখা যোগ করতে ব্যবহার করা হয়।
৩. << অপারেটর:
file = File.open("output.txt", "w")
file << "Hello, Ruby!"
file.closeএখানে, << অপারেটরের মাধ্যমে ফাইলের মধ্যে লেখা হয়েছে। এটি write মেথডের মতোই কাজ করে।
৪. এ্যাপেন্ড মোডে লেখা (Append Mode):
file = File.open("output.txt", "a")
file.puts("Appended text.")
file.closeএখানে "a" মোডের মাধ্যমে ফাইলের শেষে নতুন লেখা অ্যাড করা হয়েছে, পুরনো কনটেন্ট মুছে যায়নি।
৪. ফাইল বন্ধ করা (Closing a File)
ফাইলটি কাজ করার পর, close মেথড ব্যবহার করে ফাইল বন্ধ করা উচিত। এটি ফাইল হ্যান্ডলিংয়ের একটি ভাল অভ্যাস। ফাইল বন্ধ না করলে ফাইল লক হয়ে যেতে পারে এবং এটি সিস্টেমের উপর চাপ ফেলতে পারে।
file = File.open("example.txt", "r")
# Perform some file operations
file.close # Always close the file after use৫. File.open ব্লক ফর্ম (Block Form of File.open)
রুবিতে ফাইল হ্যান্ডলিংয়ের একটি আরও ভাল পদ্ধতি হল ব্লক ফর্মের মাধ্যমে ফাইল খুলা এবং কাজ শেষে স্বয়ংক্রিয়ভাবে ফাইলটি বন্ধ করা। এটি একটি block ব্যবহার করে করা হয়।
File.open("example.txt", "r") do |file|
content = file.read
puts content
end # file is automatically closed after the block executionএখানে, ব্লক ফর্মে ফাইলটি খুলে দেওয়া হয়েছে, এবং কাজ শেষে এটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে, আপনাকে close মেথড কল করার দরকার হবে না।
৬. ফাইল মুছা (Deleting a File)
রুবিতে File.delete মেথড ব্যবহার করে ফাইল মুছে ফেলা যায়।
File.delete("example.txt")এখানে, "example.txt" ফাইলটি মুছে ফেলা হবে।
৭. ফাইল প্রপার্টিজ (File Properties)
রুবি দিয়ে আপনি ফাইলের বিভিন্ন প্রপার্টি বা তথ্য পেতে পারেন, যেমন সাইজ, অবস্থান, তৈরি তারিখ ইত্যাদি।
file = "example.txt"
puts File.size(file) # File size in bytes
puts File.exist?(file) # Check if file exists
puts File.mtime(file) # File modification time৮. ফাইলের অধিকার (File Permissions)
রুবিতে File.chmod মেথড ব্যবহার করে আপনি ফাইলের পারমিশন (permissions) পরিবর্তন করতে পারেন।
File.chmod(0644, "example.txt") # Change file permissionsএখানে, 0644 ফাইলের পারমিশন নির্ধারণ করছে (owner read/write, others read only)।
সারসংক্ষেপ
রুবি ফাইল হ্যান্ডলিংয়ের জন্য শক্তিশালী মেথড সরবরাহ করে যা ফাইল তৈরি, পড়া, লেখা, মুছা, এবং অন্যান্য কার্যক্রম সহজ করে তোলে। File.open, File.read, File.write, এবং File.delete সহ অন্যান্য মেথড ফাইলের উপর বিভিন্ন অপারেশন করার জন্য ব্যবহৃত হয়। Block form ব্যবহার করে ফাইল হ্যান্ডলিং আরও নিরাপদ এবং কার্যকরী হয়, কারণ ফাইলটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়।
File I/O (Input/Output) হল কম্পিউটার প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ অংশ, যা ফাইলের সাথে ডেটা পড়া (Input) এবং লেখা (Output) সম্পর্কিত কার্যক্রম পরিচালনা করে। রুবি ভাষা ফাইল ম্যানিপুলেশনের জন্য বিভিন্ন ধরনের মেথড এবং ফিচার সরবরাহ করে, যার মাধ্যমে আপনি ফাইল তৈরি, পড়া, লেখা এবং মুছতে পারেন।
File I/O এর মৌলিক ধারণা
রুবিতে ফাইল I/O এর জন্য সাধারণত File ক্লাস ব্যবহার করা হয়। এই ক্লাসটি ফাইলের সাথে সম্পর্কিত বিভিন্ন কার্যক্রম করতে সহায়তা করে, যেমন:
- ফাইল খুলা (Open)
- ফাইলের মধ্যে লেখা (Write)
- ফাইল থেকে পড়া (Read)
- ফাইল বন্ধ করা (Close)
File I/O এর মৌলিক মেথডস
1. ফাইল ওপেন করা (Opening a File)
ফাইল খুলতে রুবি File.open মেথড ব্যবহার করে। আপনি যখন ফাইল খুলবেন, তখন এর একটি মোড উল্লেখ করতে হবে, যেমন পড়ার জন্য r (read), লেখার জন্য w (write), অথবা অ্যাপেন্ড করার জন্য a (append) মোড ব্যবহার করা হয়।
সিনট্যাক্স:
File.open('filename.txt', 'mode')- 'r': ফাইলটি পড়ার জন্য খুলবে (ফাইলটি যদি না থাকে, তাহলে একটি ত্রুটি দেখাবে)।
- 'w': ফাইলটি লেখার জন্য খুলবে (ফাইলটি না থাকলে তৈরি করবে এবং পুরানো কন্টেন্ট মুছে ফেলবে)।
- 'a': ফাইলটি অ্যাপেন্ড করার জন্য খুলবে (যদি ফাইল না থাকে তবে এটি তৈরি করবে)।
2. ফাইল থেকে ডেটা পড়া (Reading from a File)
ফাইল থেকে ডেটা পড়তে .read, .gets, অথবা .each_line মেথড ব্যবহার করা হয়।
.read: পুরো ফাইলের কন্টেন্ট একবারে পড়ে নেয়।.gets: এক লাইনে পড়া হয়।.each_line: ফাইলের প্রতিটি লাইনের জন্য একটি ব্লক চালায়।
উদাহরণ:
# ফাইল খুলে পড়া
file = File.open('example.txt', 'r')
content = file.read # পুরো ফাইলের কন্টেন্ট পড়া
puts content
file.close # ফাইল বন্ধ করাএখানে, read মেথড দিয়ে পুরো ফাইলের কন্টেন্ট পড়া হয়েছে এবং শেষে close মেথড দিয়ে ফাইলটি বন্ধ করা হয়েছে।
3. ফাইলে লেখা (Writing to a File)
ফাইলে লেখা লেখার জন্য .write অথবা .puts মেথড ব্যবহার করা হয়। write একবারে পুরো কন্টেন্ট লেখে, আর puts একাধিক লাইন লেখার জন্য ব্যবহৃত হয়।
উদাহরণ:
# ফাইলে লেখা
file = File.open('example.txt', 'w')
file.puts "Hello, Ruby!" # একটি লাইন লেখা
file.write("Welcome to File I/O.") # আরেকটি লাইন লেখা
file.close # ফাইল বন্ধ করাএখানে, "Hello, Ruby!" এবং "Welcome to File I/O." দুটি লাইন puts এবং write মেথডের মাধ্যমে ফাইলে লেখা হয়েছে।
4. ফাইলের মধ্যে অ্যাপেন্ড করা (Appending to a File)
ফাইলের শেষের দিকে নতুন ডেটা অ্যাপেন্ড করতে a মোড ব্যবহার করা হয়।
উদাহরণ:
# ফাইলের শেষে নতুন লেখা অ্যাপেন্ড করা
file = File.open('example.txt', 'a')
file.puts "Appended content."
file.close # ফাইল বন্ধ করাএখানে, "Appended content." ফাইলের শেষের দিকে লেখা হয়েছে।
5. ফাইল বন্ধ করা (Closing a File)
ফাইল ব্যবহারের পরে .close মেথড ব্যবহার করে ফাইলটি বন্ধ করা হয়। ফাইল বন্ধ না করলে, পরে আরও কিছু লিখতে বা পড়তে সমস্যা হতে পারে।
file = File.open('example.txt', 'r')
# ফাইলের সাথে কাজ করার পর, ফাইল বন্ধ করা
file.closeFile I/O এর সিকোয়েন্স
ফাইলের সাথে কাজ করার প্রক্রিয়া সাধারণত নিম্নলিখিত সিকোয়েন্স অনুসরণ করে:
- ফাইল খুলুন (
File.openবাFile.new). - ফাইল থেকে তথ্য পড়ুন অথবা ফাইলে তথ্য লেখুন (
.read,.puts,.writeইত্যাদি). - ফাইল বন্ধ করুন (
file.close).
File I/O এর নিরাপদ ব্যবহার (Safe File Handling)
রুবিতে File.open এর ব্লক ব্যবহার করে ফাইল ওপেন করা হয়, যা নিরাপদ এবং মেমরি ম্যানেজমেন্টে সহায়ক। ব্লকের শেষে ফাইলটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়।
উদাহরণ:
# ব্লক ব্যবহার করে ফাইলের সাথে কাজ করা
File.open('example.txt', 'r') do |file|
content = file.read
puts content
end
# ব্লক শেষে ফাইল স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবেএভাবে, ফাইল ব্যবহারের পর ফাইলটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়, যা সিস্টেম রিসোর্স মুক্ত রাখতে সহায়ক।
File I/O এর কিছু গুরুত্বপূর্ণ মেথড
.read: পুরো ফাইল পড়তে ব্যবহার করা হয়।.gets: একটি লাইন পড়তে ব্যবহার করা হয়।.each_line: ফাইলের প্রতিটি লাইন পড়তে ব্যবহার করা হয়।.write: ফাইলে লেখা লেখার জন্য ব্যবহৃত হয়।.puts: ফাইলে একটি নতুন লাইন সহ লেখা হয়।.close: ফাইল বন্ধ করতে ব্যবহৃত হয়।
ফাইল সম্পর্কিত ত্রুটি (Error Handling)
ফাইল I/O কাজ করার সময় কিছু ত্রুটি (error) ঘটতে পারে, যেমন:
- ফাইল না থাকা
- পড়তে বা লেখতে সমস্যা
- ফাইল এক্সেস করার অনুমতি না থাকা
এই ধরনের ত্রুটির জন্য begin...rescue ব্লক ব্যবহার করা হয়।
উদাহরণ:
begin
file = File.open('non_existent_file.txt', 'r')
rescue => e
puts "Error: #{e.message}"
endএখানে, যদি "non_existent_file.txt" ফাইলটি না থাকে, তাহলে এর পরিবর্তে rescue ব্লকটি কার্যকর হবে এবং একটি ত্রুটি মেসেজ দেখাবে।
সারসংক্ষেপ
- File I/O রুবিতে ফাইলের সাথে কাজ করার জন্য ব্যবহৃত হয়, যেমন পড়া, লেখা, অ্যাপেন্ড করা, এবং ফাইল বন্ধ করা।
- রুবি স্ট্রিং
File.openমেথড ব্যবহার করে ফাইল ওপেন,read,write,putsমেথড ব্যবহার করে ডেটা পড়া ও লেখা এবংcloseমেথড দিয়ে ফাইল বন্ধ করা হয়। - নিরাপদ ফাইল ব্যবহারের জন্য
File.openব্লক ব্যবহার করা হয়, যা স্বয়ংক্রিয়ভাবে ফাইল বন্ধ করে। - ত্রুটি হ্যান্ডলিংয়ের জন্য
begin...rescueব্লক ব্যবহার করা হয়।
রুবি প্রোগ্রামিং ভাষায় File I/O (Input/Output) অত্যন্ত গুরুত্বপূর্ণ। আপনি সহজেই ফাইল থেকে ডেটা পড়তে এবং ফাইলে ডেটা লিখতে পারেন। রুবি স্ট্যান্ডার্ড লাইব্রেরিতে ফাইল পরিচালনার জন্য অনেক মেথড রয়েছে, যা দিয়ে ফাইলের সাথে কাজ করা যায়।
১. File থেকে ডেটা পড়া
রুবিতে ফাইল থেকে ডেটা পড়তে বিভিন্ন পদ্ধতি রয়েছে। সাধারণত, File.read, File.readlines, বা IO মডিউল ব্যবহার করা হয়।
১.১ File.read মেথড
File.read মেথডটি ফাইলের সমস্ত কনটেন্ট একবারে পড়তে ব্যবহৃত হয়।
file_content = File.read("example.txt")
puts file_contentএখানে, "example.txt" ফাইলটির সমস্ত কনটেন্ট পড়া হবে এবং তা file_content ভেরিয়েবলে রাখা হবে। এরপর, তা আউটপুট করা হবে।
১.২ File.readlines মেথড
File.readlines মেথডটি ফাইলের সমস্ত লাইনকে একটি অ্যারেতে পড়তে ব্যবহার হয়। এই মেথডটি ফাইলের প্রতিটি লাইনকে একটি আলাদা উপাদান হিসেবে অ্যারেতে রাখে।
lines = File.readlines("example.txt")
puts linesএখানে, "example.txt" ফাইলটির প্রতিটি লাইন একটি আলাদা উপাদান হিসেবে অ্যারেতে রাখা হবে এবং পরে তা আউটপুট হবে।
১.৩ File.open মেথড
File.open মেথডটি ফাইলটি খুলে, তার পরে ফাইলের কনটেন্ট পড়তে সাহায্য করে। আপনি open মেথডের সাথে ব্লক ব্যবহার করে কাজ করতে পারেন, যা ফাইলের ব্যবহারের পরে স্বয়ংক্রিয়ভাবে ফাইলটি বন্ধ করে দেয়।
File.open("example.txt", "r") do |file|
file_content = file.read
puts file_content
endএখানে, "example.txt" ফাইলটি রিড মোডে (read mode) খোলা হয়েছে, এবং তার কনটেন্ট file.read দিয়ে পড়া হয়েছে।
২. File এ ডেটা লেখা
ফাইলে ডেটা লেখার জন্য File.write, File.puts, এবং File.open মেথড ব্যবহার করা হয়।
২.১ File.write মেথড
File.write মেথডটি ফাইলের মধ্যে নির্দিষ্ট কনটেন্ট লেখার জন্য ব্যবহার করা হয়।
File.write("example.txt", "Hello, world!")এখানে, "example.txt" ফাইলে "Hello, world!" লেখার কাজ করবে। যদি ফাইলটি পূর্বে থেকেই থাকে, তবে এটি পুরনো কনটেন্টকে ওভাররাইট করবে।
২.২ File.puts মেথড
File.puts মেথডটি ফাইলের মধ্যে লাইন আকারে ডেটা লেখার জন্য ব্যবহার হয়।
File.open("example.txt", "w") do |file|
file.puts("Hello, world!")
file.puts("Welcome to Ruby file handling.")
endএখানে, "example.txt" ফাইলে দুটি লাইন লেখা হবে। w মোড ফাইলটি লেখার জন্য খোলার নির্দেশ দেয় এবং এটি ফাইলের পুরনো কনটেন্টকে মুছে ফেলে নতুন কনটেন্ট লেখে।
২.৩ File.open মেথড দিয়ে লেখা
File.open মেথড ব্যবহার করে আপনি লেখার জন্য একটি ব্লকও ব্যবহার করতে পারেন। এটি পুরনো কনটেন্টের সাথে নতুন ডেটা যোগ করতে সহায়ক।
File.open("example.txt", "a") do |file|
file.puts("This is an appended line.")
endএখানে, "example.txt" ফাইলটি অ্যাপেন্ড মোডে (append mode) খোলা হয়েছে, যার ফলে পুরনো কনটেন্টের শেষে নতুন লাইন যোগ করা হয়েছে।
৩. File I/O Error Handling
ফাইলের সাথে কাজ করার সময় আপনি ফাইল না থাকলে অথবা রিড/রাইট পারমিশন না থাকলে error handling করতে পারেন।
begin
file = File.open("example.txt", "r")
content = file.read
puts content
rescue Errno::ENOENT
puts "The file does not exist!"
rescue Errno::EACCES
puts "You do not have permission to read the file!"
ensure
file.close if file
endএখানে, Errno::ENOENT ত্রুটি ফাইল না থাকার ক্ষেত্রে এবং Errno::EACCES ত্রুটি ফাইল রিড/রাইট পারমিশন না থাকার ক্ষেত্রে ধরা পড়বে।
সারসংক্ষেপ
- File.read: ফাইলের সমস্ত কনটেন্ট একবারে পড়তে ব্যবহার করা হয়।
- File.readlines: ফাইলের প্রতিটি লাইনকে একটি অ্যারেতে পড়তে ব্যবহার করা হয়।
- File.open: ফাইলের কনটেন্ট পড়তে বা লিখতে ব্যবহৃত হয় এবং ব্লক ব্যবহার করলে ফাইল বন্ধ হয়ে যায়।
- File.write: ফাইলে একটি নির্দিষ্ট কনটেন্ট লেখার জন্য ব্যবহৃত হয়।
- File.puts: ফাইলে একটি লাইন আকারে ডেটা লেখার জন্য ব্যবহৃত হয়।
- File I/O Error Handling: ফাইলের সাথে কাজ করার সময় ত্রুটির জন্য
begin-rescue-ensureব্লক ব্যবহার করা যায়।
এই পদ্ধতিগুলির মাধ্যমে আপনি রুবিতে ফাইল পরিচালনা করতে পারবেন এবং ফাইলের কনটেন্ট পড়া বা লেখা সহজেই করতে পারবেন।
রুবি প্রোগ্রামিং ভাষায় File Modes এবং Exception Handling দুটি গুরুত্বপূর্ণ ধারণা, যা ফাইল সিস্টেমের সাথে কাজ করার সময় এবং এর মধ্যে ত্রুটি (error) মোকাবিলা করার সময় ব্যবহৃত হয়। এখানে আমরা File Modes এবং Exception Handling এর ধারণা, ব্যবহার এবং তাদের গুরুত্ব আলোচনা করব।
১. File Modes (ফাইল মোডস)
রুবি ভাষায় ফাইলের সাথে কাজ করার জন্য File modes ব্যবহার করা হয়, যা নির্ধারণ করে যে ফাইলটি read, write, বা append মোডে খোলা হবে এবং কিভাবে তার মধ্যে ডেটা লেখা বা পড়া হবে।
ফাইল মোডের ধরন:
r: ফাইলটি read-only মোডে খোলা হবে। যদি ফাইলটি না থাকে, তাহলে ত্রুটি দেখাবে।w: ফাইলটি write মোডে খোলা হবে। যদি ফাইলটি আগে থেকে থাকে, তাহলে তার পুরনো ডেটা মুছে নতুন ডেটা লেখা হবে। যদি ফাইলটি না থাকে, তাহলে নতুন ফাইল তৈরি হবে।a: ফাইলটি append মোডে খোলা হবে। অর্থাৎ, পুরনো ডেটা মুছে ফেলা হবে না, নতুন ডেটা ফাইলের শেষে যোগ হবে। যদি ফাইলটি না থাকে, তাহলে নতুন ফাইল তৈরি হবে।r+: ফাইলটি read-write মোডে খোলা হবে। অর্থাৎ, ফাইলটি পড়া এবং লেখা উভয়ের জন্য খোলা থাকবে। যদি ফাইলটি না থাকে, তাহলে ত্রুটি দেখাবে।w+: ফাইলটি write-read মোডে খোলা হবে। যদি ফাইলটি আগে থাকে, তাহলে তার পুরনো ডেটা মুছে নতুন ডেটা লেখা হবে, এবং ফাইলটি পড়া যাবে। যদি ফাইলটি না থাকে, তাহলে নতুন ফাইল তৈরি হবে।a+: ফাইলটি append-read মোডে খোলা হবে। পুরনো ডেটা মুছে ফেলা হবে না, নতুন ডেটা যোগ হবে, এবং ফাইলটি পড়া যাবে।
ফাইল খোলা:
ফাইল খোলার জন্য রুবিতে File.open মেথড ব্যবহৃত হয়, এবং এতে ফাইল মোড প্যারামিটার হিসেবে দেওয়া হয়।
উদাহরণ:
# রিড মোডে ফাইল খোলা
file = File.open("example.txt", "r")
puts file.read
file.close
# রাইট মোডে ফাইল খোলা
file = File.open("example.txt", "w")
file.write("Hello, Ruby!")
file.close
# অ্যাপেন্ড মোডে ফাইল খোলা
file = File.open("example.txt", "a")
file.puts("Appending some text.")
file.closeএখানে, প্রথমে ফাইলটি read মোডে খোলা হয়েছে এবং তার কনটেন্ট পড়া হয়েছে, পরে write মোডে ফাইল খোলা হয়েছে এবং তার মধ্যে কিছু লেখা হয়েছে, এবং শেষে append মোডে ফাইল খোলা হয়েছে এবং তার শেষে নতুন কিছু লেখা হয়েছে।
২. Exception Handling (এক্সসেপশন হ্যান্ডলিং)
Exception Handling হচ্ছে একটি প্রোগ্রামিং কৌশল যার মাধ্যমে আপনি কোডে যে কোনো ধরনের ত্রুটি (error) বা ব্যতিক্রম (exception) ঘটে গেলে সেটি সঠিকভাবে পরিচালনা করতে পারেন। রুবিতে Exception Handling এর জন্য begin...rescue...end ব্লক ব্যবহৃত হয়। এটি কোডের ত্রুটি ম্যানেজমেন্ট এবং ত্রুটির কারণে প্রোগ্রাম ক্র্যাশ হওয়া আটকাতে সহায়তা করে।
Syntax:
begin
# কোড যা ত্রুটি ঘটাতে পারে
rescue ExceptionType => e
# ত্রুটি ধরা হলে কোড
else
# যদি কোন ত্রুটি না ঘটে
ensure
# সবশেষে যাই হোক না কেন, এই কোডটি চালানো হবে
end১. begin...rescue: সাধারণ ত্রুটি ধরার জন্য ব্যবহৃত হয়।
২. else: যদি কোনো ত্রুটি না ঘটে, তাহলে এই অংশটি কার্যকর হয়।
৩. ensure: এই অংশটি ত্রুটি ঘটুক বা না ঘটুক, সর্বদা কার্যকর হয়।
উদাহরণ:
begin
puts "Enter a number:"
num = Integer(gets.chomp)
puts "The number is #{num}"
rescue ArgumentError => e
puts "Error: Please enter a valid number."
else
puts "No error occurred!"
ensure
puts "This is always executed."
endআউটপুট:
Enter a number:
abc
Error: Please enter a valid number.
This is always executed.এখানে:
beginব্লকটি সেই কোড ধারণ করে যেখানে ত্রুটি ঘটতে পারে।rescueব্লকটি ত্রুটি (এখানেArgumentError) ধরা হলে চালিত হয়।elseব্লকটি কোন ত্রুটি না ঘটলে কার্যকর হয়।ensureব্লকটি কোডের শেষে অবশ্যই চালিত হয়, ত্রুটি ঘটুক বা না ঘটুক।
৩. Specific Exception Types
রুবিতে আপনি specific exception types ধরতে পারেন, যেমন ZeroDivisionError, IOError, ArgumentError, ইত্যাদি।
উদাহরণ:
begin
# ZeroDivisionError এড়ানোর জন্য কোড
result = 10 / 0
rescue ZeroDivisionError => e
puts "Error: Division by zero is not allowed."
endএখানে, ZeroDivisionError ক্যাচ করা হয়েছে এবং ব্যবহারকারীকে একটি সঠিক ত্রুটি বার্তা দেখানো হয়েছে।
৪. Raising Exceptions
রুবি ভাষায় আপনি নিজে থেকে ত্রুটি বা ব্যতিক্রম (exception) উত্থাপন (raise) করতে পারেন। এটি বিশেষভাবে তখন ব্যবহৃত হয় যখন আপনি কিছু নির্দিষ্ট শর্ত পূর্ণ না হলে ত্রুটি চান।
উদাহরণ:
def check_age(age)
raise "Age must be greater than 18" if age < 18
puts "Age is valid"
end
begin
check_age(16)
rescue => e
puts "Error: #{e}"
endএখানে, raise কমান্ডটি নির্দিষ্ট শর্তে ত্রুটি উত্থাপন করেছে।
সারসংক্ষেপ
- File Modes: রুবিতে ফাইল মোডের মাধ্যমে আপনি ফাইলের সাথে কাজ করতে পারেন (যেমন
r,w,a,r+, ইত্যাদি) এবং কিভাবে ফাইল পড়া, লেখা বা অ্যাপেন্ড করা হবে তা নির্ধারণ করা হয়। - Exception Handling: রুবিতে
begin...rescue...endব্লক ব্যবহার করে ত্রুটির সঠিক ব্যবস্থা নেওয়া হয়, যাতে প্রোগ্রামটি চলাকালীন ত্রুটি ঘটলে সেটি ঠিকভাবে হ্যান্ডল করা যায়। raise: আপনি নিজে থেকে ত্রুটি তৈরি করতে পারেন এবংrescueব্লকে তা ধরতে পারেন।
এগুলি রুবি প্রোগ্রামিং ভাষায় ফাইল সিস্টেমের সাথে কাজ করার সময় এবং ত্রুটি মোকাবিলা করার সময় কার্যকরী ভূমিকা পালন করে।
রুবি প্রোগ্রামিং ভাষায় File এবং Directory ম্যানিপুলেশন খুবই গুরুত্বপূর্ণ একটি বিষয়, বিশেষত যখন আপনি ফাইল সিস্টেমে কাজ করছেন। রুবি ফাইল এবং ডিরেক্টরি তৈরি, পড়া, লেখা, পরিবর্তন, মুছে ফেলা এবং অন্যান্য কার্যক্রম সম্পাদন করতে সহায়তা করে। রুবি ব্যবহার করে আপনি সিস্টেম ফাইল পরিচালনা করতে পারেন খুব সহজে।
রুবির File এবং Dir ক্লাস এই ধরনের কার্যক্রম পরিচালনার জন্য ব্যবহৃত হয়।
১. File ম্যানিপুলেশন
File ক্লাস রুবিতে ফাইলের সাথে কাজ করার জন্য ব্যবহৃত হয়। এখানে কিছু গুরুত্বপূর্ণ ফাইল ম্যানিপুলেশন অপারেশন দেয়া হলো।
১.১ ফাইল তৈরি করা এবং লেখা
রুবিতে নতুন ফাইল তৈরি করতে এবং তাতে লেখা দেওয়ার জন্য File.open মেথড ব্যবহার করা হয়। এই মেথডে দুটি পারামিটার থাকে — প্রথমটি ফাইলের নাম এবং দ্বিতীয়টি মোড (যেমন, লেখা, পড়া ইত্যাদি)।
# Writing to a file
file = File.open("example.txt", "w") # "w" mode is for writing
file.puts("Hello, Ruby!")
file.puts("This is a new file.")
file.closeএখানে, "example.txt" নামের একটি নতুন ফাইল তৈরি হবে এবং তাতে কিছু টেক্সট লেখা হবে।
১.২ ফাইল পড়া
ফাইল থেকে তথ্য পড়তে File.read বা File.open ব্যবহার করা যায়।
# Reading from a file
content = File.read("example.txt")
puts contentএটি "example.txt" ফাইলের সমস্ত কনটেন্ট পড়ে আউটপুট করবে।
১.৩ ফাইলের মেটাডেটা সংগ্রহ
ফাইলের মেটাডেটা যেমন আকার, প্রক্রিয়া সময়, তৈরি সময় ইত্যাদি পেতে File ক্লাসের বিভিন্ন মেথড ব্যবহার করা যায়।
# Getting file information
file_info = File.stat("example.txt")
puts file_info.size # Output the size of the file১.৪ ফাইল মুছে ফেলা
ফাইল মুছে ফেলতে File.delete মেথড ব্যবহার করা হয়।
# Deleting a file
File.delete("example.txt")এটি "example.txt" ফাইলটি মুছে ফেলবে।
১.৫ ফাইল চেক করা
ফাইলটি অস্তিত্ব আছে কিনা চেক করতে File.exist? মেথড ব্যবহার করা হয়।
# Checking if a file exists
if File.exist?("example.txt")
puts "File exists!"
else
puts "File not found."
end২. Directory ম্যানিপুলেশন
রুবির Dir ক্লাস ফাইল সিস্টেমের ডিরেক্টরি ম্যানিপুলেশন কাজের জন্য ব্যবহৃত হয়। এটি ডিরেক্টরি তৈরি, মুছে ফেলা, ফাইল লিস্ট করা, এবং অন্যান্য কার্যক্রম করতে সহায়তা করে।
২.১ ডিরেক্টরি তৈরি করা
Dir.mkdir মেথড দিয়ে নতুন ডিরেক্টরি তৈরি করা যায়।
# Creating a directory
Dir.mkdir("new_directory")এটি "new_directory" নামে একটি নতুন ডিরেক্টরি তৈরি করবে।
২.২ ডিরেক্টরি বাদ দেওয়া
Dir.rmdir মেথড দিয়ে খালি ডিরেক্টরি মুছে ফেলা হয়।
# Deleting a directory
Dir.rmdir("new_directory")এটি "new_directory" ডিরেক্টরি মুছে ফেলবে, তবে এটি যদি খালি না হয়, তবে ত্রুটি প্রদর্শিত হবে।
২.৩ ডিরেক্টরির মধ্যে ফাইলের তালিকা পাওয়া
Dir.entries মেথড ব্যবহার করে ডিরেক্টরির মধ্যে থাকা সমস্ত ফাইলের তালিকা পাওয়া যায়।
# Listing all files in a directory
files = Dir.entries(".")
puts filesএটি বর্তমান ডিরেক্টরির মধ্যে থাকা সমস্ত ফাইল এবং ফোল্ডারের তালিকা প্রদর্শন করবে (যতগুলো "." ডিরেক্টরির মধ্যে রয়েছে)।
২.৪ ডিরেক্টরি পরিবর্তন করা
Dir.chdir মেথড ব্যবহার করে বর্তমান কার্যকারী ডিরেক্টরি পরিবর্তন করা যায়।
# Changing the current directory
Dir.chdir("/path/to/directory")
puts "Current directory: #{Dir.pwd}"এটি বর্তমান কার্যকারী ডিরেক্টরি পরিবর্তন করবে এবং Dir.pwd দিয়ে নতুন কার্যকারী ডিরেক্টরিটি দেখাবে।
২.৫ ডিরেক্টরির মধ্যে ফাইল প্যাটার্ন মেলানো
Dir.glob মেথড ব্যবহার করে ডিরেক্টরি বা সাব-ডিরেক্টরির মধ্যে নির্দিষ্ট প্যাটার্ন অনুসারে ফাইল খুঁজে বের করা যায়।
# Finding all .txt files in the directory
txt_files = Dir.glob("*.txt")
puts txt_filesএটি বর্তমান ডিরেক্টরিতে থাকা সব .txt এক্সটেনশনযুক্ত ফাইলগুলির তালিকা দেখাবে।
৩. File ও Directory এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | File | Directory |
|---|---|---|
| ব্যবহার | একক ফাইলের সাথে কাজ করার জন্য | ডিরেক্টরি এবং তার মধ্যে থাকা ফাইলের সাথে কাজ করার জন্য |
| প্রক্রিয়া | ফাইল তৈরি, পড়া, লেখা, মুছে ফেলা | ডিরেক্টরি তৈরি, মুছে ফেলা, ফাইল লিস্ট করা |
| মেথড | File.read, File.write, File.delete | Dir.mkdir, Dir.rmdir, Dir.entries |
সারসংক্ষেপ
- File ক্লাস ফাইলের সাথে সম্পর্কিত বিভিন্ন কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়, যেমন ফাইল তৈরি, পড়া, লেখা, এবং মুছে ফেলা।
- Dir ক্লাস ডিরেক্টরি সম্পর্কিত কার্যক্রমের জন্য ব্যবহৃত হয়, যেমন নতুন ডিরেক্টরি তৈরি, ডিরেক্টরি মুছে ফেলা এবং ডিরেক্টরি মধ্যে থাকা ফাইলগুলির তালিকা করা।
- রুবিতে File এবং Dir ক্লাসের মাধ্যমে ফাইল এবং ডিরেক্টরি ম্যানিপুলেশন খুবই সহজ এবং কার্যকরী।
এই ফিচারগুলো রুবি প্রোগ্রামিং ভাষায় ফাইল সিস্টেম পরিচালনা এবং অটোমেশন স্ক্রিপ্ট তৈরি করতে সহায়ক।
Read more