Elixir এ ফাইল থেকে ডেটা পড়া এবং লেখা
Elixir তে ফাইলের সাথে কাজ করা সহজ এবং সরল, কারণ Elixir এর মধ্যে IO মডিউল এবং File মডিউল রয়েছে যা ফাইল থেকে ডেটা পড়া এবং লেখার জন্য ব্যবহৃত হয়। ফাইল থেকে ডেটা পড়া এবং লেখার বিভিন্ন পদ্ধতি রয়েছে, যেমন টেক্সট ফাইল, বাইনারি ফাইল, একক লাইন বা বহু লাইন পড়া ইত্যাদি। নিচে Elixir তে ফাইলের সাথে কাজ করার কিছু মৌলিক উদাহরণ দেওয়া হয়েছে।
1. ফাইল থেকে ডেটা পড়া
Elixir তে File.read/1 ফাংশন ব্যবহার করে একটি ফাইল থেকে সম্পূর্ণ ডেটা পড়া যায়। এই ফাংশনটি একটি tuple রিটার্ন করে যেখানে প্রথম উপাদান হল ডেটা (যদি সফল হয়) এবং দ্বিতীয় উপাদান হল ত্রুটি (যদি কোনো সমস্যা হয়)।
একটি সম্পূর্ণ ফাইল পড়া:
case File.read("example.txt") do
{:ok, content} -> IO.puts("File content: #{content}")
{:error, reason} -> IO.puts("Failed to read file: #{reason}")
endএখানে, File.read/1 ফাংশনটি ফাইলের কন্টেন্ট পড়ে এবং যদি সফল হয়, তবে {:ok, content} রিটার্ন করে, যেখানে content ফাইলের সকল লেখা থাকবে।
লাইনে লাইনে ফাইল পড়া (streaming):
যদি আপনি ফাইলের প্রতিটি লাইনের উপর কাজ করতে চান, তবে File.stream!/1 ফাংশন ব্যবহার করতে পারেন। এটি বড় ফাইলের জন্য উপযোগী, কারণ এটি ফাইলের প্রতিটি লাইনের সাথে কাজ করার সময় পুরো ফাইল একসাথে মেমরিতে লোড করে না।
File.stream!("example.txt")
|> Enum.each(fn line -> IO.puts(line) end)এখানে, File.stream!/1 ফাংশনটি ফাইলটি স্ট্রিমের মাধ্যমে পড়বে এবং প্রতিটি লাইনের জন্য IO.puts/1 ফাংশন কল করবে।
2. ফাইল লেখার জন্য
Elixir তে File.write/2 ফাংশন ব্যবহার করে একটি ফাইল তৈরি করা বা এর মধ্যে ডেটা লেখা যায়। এই ফাংশনটি একটি tuple রিটার্ন করে: { :ok, bytes_written } যদি সফল হয় এবং { :error, reason } যদি কোনো সমস্যা হয়।
ফাইল লেখার উদাহরণ:
case File.write("example.txt", "Hello, Elixir!") do
{:ok, bytes_written} -> IO.puts("File written successfully. Bytes written: #{bytes_written}")
{:error, reason} -> IO.puts("Failed to write file: #{reason}")
endএখানে, File.write/2 ফাংশনটি ফাইলের মধ্যে "Hello, Elixir!" লিখবে এবং সফল হলে { :ok, bytes_written } রিটার্ন করবে।
ফাইলের শেষে ডেটা অ্যাপেন্ড করা:
যদি আপনি ফাইলের শেষের দিকে ডেটা অ্যাপেন্ড করতে চান, তাহলে File.append/2 ফাংশন ব্যবহার করতে পারেন।
case File.append("example.txt", "\nAppended text") do
{:ok, bytes_written} -> IO.puts("Text appended successfully. Bytes written: #{bytes_written}")
{:error, reason} -> IO.puts("Failed to append to file: #{reason}")
endএখানে, File.append/2 ফাংশনটি ফাইলের শেষে "Appended text" যোগ করবে।
3. বাইনারি ফাইল পড়া এবং লেখা
Elixir তে File.read/1 বা File.write/2 সাধারণত টেক্সট ফাইলের জন্য ব্যবহৃত হয়, তবে বাইনারি ফাইলের জন্য আপনাকে কিছুটা ভিন্নভাবে কাজ করতে হবে। বাইনারি ফাইল পড়তে :binary ফ্ল্যাগ ব্যবহার করা হয়।
বাইনারি ফাইল পড়া:
{:ok, binary_data} = File.read("example.bin", [:binary])
IO.inspect(binary_data)এখানে, ফাইল example.bin এর বাইনারি ডেটা binary_data ভেরিয়েবলে স্টোর হবে।
বাইনারি ফাইল লেখা:
binary_data = <<1, 2, 3, 4, 5>>
File.write("example.bin", binary_data)এখানে, বাইনারি ডেটা <<1, 2, 3, 4, 5>> ফাইল example.bin এ লেখা হবে।
4. ফাইল অপারেশনস (File Operations)
Elixir তে ফাইল সম্পর্কিত আরও কিছু সাধারণ অপারেশন রয়েছে, যেমন ফাইল চেক করা, ফাইল ডিলিট করা ইত্যাদি।
ফাইল পরীক্ষা করা:
ফাইলটি বিদ্যমান কিনা চেক করতে File.exists?/1 ফাংশন ব্যবহার করা হয়।
if File.exists?("example.txt") do
IO.puts("File exists!")
else
IO.puts("File does not exist!")
endফাইল মুছে ফেলা:
ফাইল মুছে ফেলতে File.rm/1 ব্যবহার করা হয়।
case File.rm("example.txt") do
:ok -> IO.puts("File removed successfully!")
{:error, reason} -> IO.puts("Failed to remove file: #{reason}")
endফোল্ডার তৈরি করা:
ফোল্ডার তৈরি করতে File.mkdir/1 বা File.mkdir_p/1 ফাংশন ব্যবহার করা হয়।
File.mkdir("new_directory")এটি নতুন ডিরেক্টরি তৈরি করবে।
সারসংক্ষেপ
Elixir তে File মডিউল এবং IO মডিউল ব্যবহার করে আপনি ফাইলের মধ্যে ডেটা পড়তে এবং লিখতে পারেন। এটি বেশিরভাগ সাধারণ ফাইল অপারেশনের জন্য উপযোগী, যেমন:
- File.read/1: ফাইল থেকে ডেটা পড়া।
- File.write/2: ফাইলের মধ্যে ডেটা লেখা।
- File.append/2: ফাইলের শেষে ডেটা অ্যাপেন্ড করা।
- File.stream!/1: বড় ফাইলের জন্য লাইনে লাইনে পড়া।
- File.rm/1: ফাইল মুছে ফেলা।
- File.exists?/1: ফাইলের অস্তিত্ব পরীক্ষা করা।
Elixir তে ফাইলের সাথে কাজ করা অনেক সহজ এবং সরল, এবং এটি ডেভেলপারদের জন্য শক্তিশালী ফাইল ব্যবস্থাপনা সুবিধা প্রদান করে।
Read more