আজ আপনি রুবিতে ফাইলগুলি পড়তে এবং লিখতে শিখবেন যাতে আপনি বিষয়বস্তু বের করতে, নতুন ফাইল তৈরি করতে এবং আপনার প্রয়োজনীয় তথ্য খুঁজে পেতে পারেন!
এখানে আমরা যা কভার করতে যাচ্ছি :
বিষয়বস্তু
- 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") { |লাইন| লাইন রাখে
পরিবর্তে পুরো ফাইলটি মেমরিতে পড়ার আপনি ফাইলটি একবারে একটি লাইন প্রক্রিয়া করতে সক্ষম হবেন, যা বড় ফাইলগুলির জন্য দরকারী৷
৷রুবিতে একটি ফাইলে কীভাবে লিখবেন
আপনি যদি রুবি ব্যবহার করে একটি ফাইলে লিখতে চান:
- ফাইলটি লেখার মোডে খুলুন (“w” পতাকা)
-
write
ব্যবহার করুন ফাইলে ডেটা যোগ করার পদ্ধতি - যদি আপনি ব্লক সংস্করণটি ব্যবহার না করে থাকেন, তাহলে মনে রাখবেন
close
করতে
উদাহরণ :
File.open("log.txt", "w") { |f| f.write "#{Time.now} - ব্যবহারকারী লগ ইন করেছেন\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"), মোড:"a")
কোনো বস্তুকে স্ট্রিং-এ রূপান্তর করার এই প্রক্রিয়াকে বলা হয় ক্রমিককরণ।
রুবি ফাইল পদ্ধতি
আপনি ফাইলগুলিকে পড়া এবং লেখার পাশাপাশি অন্যান্য জিনিসগুলিও করতে পারেন৷
৷উদাহরণস্বরূপ, আপনি জানতে চাইতে পারেন যে একটি ফাইল বিদ্যমান কিনা৷ অথবা বর্তমান ডিরেক্টরির জন্য ফাইলগুলির একটি তালিকা পেতে৷
৷আপনি এর মত পদ্ধতি ব্যবহার করতে যাচ্ছেন :
- নাম পরিবর্তন করুন
- আকার
- আছে?
- extname
- বেসনেম
- dirname
- ডিরেক্টরি?
- ফাইল?
কয়েকটি উদাহরণ দেখা যাক :
# একটি ফাইলের নাম পরিবর্তন করা হচ্ছে ফাইলের নাম পরিবর্তন করা হচ্ছে ?("log.txt")# ফাইল এক্সটেনশন পান, ফাইলটি বিদ্যমান না থাকলেও এটি কাজ করে। basename("/tmp/ebook.pdf")# => "ebook.pdf"# ফাইল nameFile.dirname("/tmp/ebook.pdf")# => "/tmp" ছাড়া এই ফাইলটির জন্য পথ পান # এটি কি আসলে একটি ফাইল বা একটি ডিরেক্টরি? File.directory?("cats")
যদি আপনি একটি ডিরেক্টরি তালিকার বিষয়বস্তু লুপ করে থাকেন তাহলে শেষ উদাহরণটি আরও বোধগম্য হয়৷
৷def find_files_in_current_directory entries =Dir.entries(".") entries.reject { |entry| File.directory?(entry) }শেষ
আপনি একটি ফাইলের পরিসংখ্যানও পেতে পারেন, যেমন ফাইলের আকার, অনুমতি, তৈরির তারিখ, ইত্যাদি:
File.stat("/tmp")
ডিরেক্টরি অপারেশনস
Dir.glob ব্যবহার করে আপনি একটি নির্দিষ্ট প্যাটার্নের সাথে মেলে এমন সমস্ত ফাইলের একটি তালিকা পেতে পারেন।
এখানে কিছু উদাহরণ আছে:
# বর্তমান ডিরেক্টরির সকল ফাইলDir.glob("*")# nameDir.glob("*spec*")# এ "spec" ধারণকারী সমস্ত ফাইল প্রাক>কোডের এই এক লাইনটি বর্তমান ডিরেক্টরি থেকে শুরু করে রুবিতে সমস্ত ফাইলকে পুনরাবৃত্তভাবে তালিকাভুক্ত করবে :
Dir.glob("**/**")আপনি শুধুমাত্র ডিরেক্টরি অনুসন্ধান করতে চাইলে এটি ব্যবহার করুন:
Dir.glob("**/**/")Dir ক্লাস ব্যবহার করে বর্তমান কাজের ডিরেক্টরি প্রিন্ট করাও সম্ভব :
Dir.pwdএকটি ডিরেক্টরি খালি কিনা পরীক্ষা করুন:
Dir.Empty?("/tmp")# মিথ্যাএকটি ডিরেক্টরি বিদ্যমান কিনা পরীক্ষা করুন:
Dir.exists?("/home/jesus")# সত্যএকটি নতুন ডিরেক্টরি তৈরি করুন:
Dir.mkdir("/tmp/testing")mktmpdir:
দিয়ে একটি অস্থায়ী ডিরেক্টরি তৈরি করুনDir.mktmpdir do |dir| File.write(dir + "/log.txt", "test")endকিভাবে FileUtils মডিউল ব্যবহার করবেন
কিছু অতিরিক্ত ফাইল হ্যান্ডলিং ইউটিলিটি রয়েছে যা আপনি FileUtils মডিউলের মধ্যে অ্যাক্সেস পেতে পারেন৷
উদাহরণস্বরূপ, আপনি ফাইল তুলনা করতে পারেন৷ , একটি ফাইল স্পর্শ করুন (শেষ অ্যাক্সেস এবং পরিবর্তনের সময় আপডেট করতে ), অথবা cp_r দিয়ে ফাইল ও ডিরেক্টরি অনুলিপি করুন .
এরকম :
'fileutils'FileUtils.compare_file("a.txt", "b.txt")FileUtils.touch("/tmp/lock")FileUtils.cp_r("ডেটা", "ব্যাকআপ") প্রয়োজন
cp_r
-এ “r” বিটিডব্লিউ "রিকারসিভ" এর জন্য দাঁড়ায়।সারাংশ
আপনি
File.read
এর মত বিল্ট-ইন পদ্ধতি ব্যবহার করে রুবিতে ফাইল এবং ফোল্ডারগুলি পরিচালনা করতে শিখেছেন। &File.write
.পড়ার জন্য ধন্যবাদ!