Erlang-এ File Operations: file:open(), file:read(), file:write(), file:close()
Erlang-এ ফাইল অপারেশন খুবই সহজ এবং শক্তিশালী। file মডিউলটি ব্যবহার করে আমরা ফাইল ওপেন, পড়া, লেখা এবং বন্ধ করার কাজ করতে পারি। এখানে আমরা file:open/2, file:read/2, file:write/2, এবং file:close/1 ফাংশনগুলির মাধ্যমে সাধারণ ফাইল অপারেশনগুলো কিভাবে করা যায়, তা বিস্তারিতভাবে দেখবো।
1. file:open/2 - ফাইল খোলা
file:open/2 ফাংশনটি একটি ফাইল ওপেন করতে ব্যবহৃত হয়। এটি ফাইলের নাম এবং মোড (অর্থাৎ কিভাবে ফাইলটি খোলা হবে) গ্রহন করে। আপনি যে মোডে ফাইলটি খুলবেন তা নির্ধারণ করতে পারেন, যেমন শুধুমাত্র পড়ার জন্য (read), লেখার জন্য (write), বা উভয়ের জন্য (read_write)।
ফাংশনের সিগনেচার:
file:open(FileName, Mode)- FileName: ফাইলের নাম (একটি স্ট্রিং বা অ্যাটম হতে পারে)।
- Mode: ফাইলটি কিভাবে ওপেন হবে। এটি হতে পারে:
read: শুধুমাত্র পড়ার জন্য।write: লেখার জন্য। এটি ফাইলকে নতুনভাবে তৈরি করে (ফাইল আগে থেকেই থাকলে ওভাররাইট করবে)।read_write: পড়া এবং লেখা উভয়ের জন্য।
উদাহরণ:
1> {ok, File} = file:open("example.txt", [read]).
{ok, #Port<0.35>}এখানে, file:open/2 ফাংশনটি "example.txt" ফাইলটি পড়ার জন্য খুলবে এবং File হল একটি port যা ফাইল অপারেশন পরিচালনা করবে।
2. file:read/2 - ফাইল পড়া
file:read/2 ফাংশনটি একটি ফাইল থেকে ডেটা পড়তে ব্যবহৃত হয়। এটি ফাইল থেকে নির্দিষ্ট পরিমাণ বাইট পড়তে সাহায্য করে। আপনি যদি একবারে পুরো ফাইলটি পড়তে চান তবে আপনি এটি একে একে ব্লক করে পড়তে পারেন।
ফাংশনের সিগনেচার:
file:read(File, Length)- File: ফাইলের জন্য একটি port (যা
file:open/2দ্বারা প্রদান করা হয়)। - Length: যে পরিমাণ বাইট আপনি পড়তে চান। যদি আপনি পুরো ফাইলটি পড়তে চান, তাহলে এটি কিছুটা সীমিত হতে পারে বা আপনি পরে বার বার ফাংশনটি কল করে ফাইলের বাকি অংশটি পড়তে পারেন।
উদাহরণ:
1> {ok, File} = file:open("example.txt", [read]).
{ok, #Port<0.35>}
2> {ok, Data} = file:read(File, 10).
{ok, "Hello World"}এখানে, প্রথমে আমরা ফাইলটি ওপেন করেছি এবং তারপর file:read/2 ব্যবহার করে ফাইল থেকে 10 বাইট পড়েছি। ফলস্বরূপ, "Hello World" পড়া হয়েছে।
3. file:write/2 - ফাইল লেখা
file:write/2 ফাংশনটি একটি ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়। এটি লেখার জন্য একটি ফাইল ওপেন করলে ব্যবহৃত হয় এবং ডেটা একটি বাইট স্ট্রিম আকারে ফাইলে লেখা হয়।
ফাংশনের সিগনেচার:
file:write(File, Data)- File: ফাইলের জন্য একটি port (যা
file:open/2দ্বারা প্রদান করা হয়)। - Data: যে ডেটা আপনি ফাইলে লিখতে চান (এটি একটি বাইট স্ট্রিম হতে হবে)।
উদাহরণ:
1> {ok, File} = file:open("example.txt", [write]).
{ok, #Port<0.35>}
2> file:write(File, "Hello, Erlang!").
okএখানে, "Hello, Erlang!" স্ট্রিংটি "example.txt" ফাইলে লিখিত হয়েছে। ফাইলটি লেখার জন্য খুলে লেখার পরে সাফল্যসূচক ok রিটার্ন হয়েছে।
4. file:close/1 - ফাইল বন্ধ করা
file:close/1 ফাংশনটি ফাইলের কাজ শেষ হলে ফাইলটি বন্ধ করতে ব্যবহৃত হয়। যখন আপনি ফাইলের সাথে কাজ সম্পন্ন করেন, তখন এটি বন্ধ করা গুরুত্বপূর্ণ যাতে আপনি মেমরি মুক্ত করতে পারেন এবং পরবর্তী সময় ফাইলটি আবার ব্যবহৃত হতে পারে।
ফাংশনের সিগনেচার:
file:close(File)- File: ফাইলের জন্য একটি port (যা
file:open/2দ্বারা প্রদান করা হয়)।
উদাহরণ:
1> file:close(File).
okএখানে, file:close/1 ফাংশনটি ফাইলটি বন্ধ করেছে এবং ok রিটার্ন করেছে।
একত্রিত উদাহরণ:
-module(file_example).
-export([write_and_read_file/0]).
write_and_read_file() ->
%% Open the file for writing
{ok, File} = file:open("example.txt", [write]),
%% Write some data to the file
file:write(File, "Hello, Erlang!\nThis is a simple file operation example."),
%% Close the file after writing
file:close(File),
%% Reopen the file for reading
{ok, File2} = file:open("example.txt", [read]),
%% Read the file contents
{ok, Data} = file:read(File2, 1024),
%% Print the file contents
io:format("File contents: ~s~n", [Data]),
%% Close the file after reading
file:close(File2).এখানে, প্রথমে "example.txt" ফাইলটি লেখা হয়, তারপর আবার পড়া হয় এবং পরবর্তীতে প্রিন্ট করা হয়।
টেস্টিং:
1> c(file_example).
{ok,file_example}
2> file_example:write_and_read_file().
File contents: "Hello, Erlang!\nThis is a simple file operation example."
okউপসংহার
file:open/2: ফাইল ওপেন করার জন্য ব্যবহৃত হয়, এবং এতে আমরা ফাইলের নাম এবং মোড (পড়া, লেখা ইত্যাদি) নির্ধারণ করি।file:read/2: ফাইল থেকে ডেটা পড়ার জন্য ব্যবহৃত হয়।file:write/2: ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়।file:close/1: ফাইল বন্ধ করার জন্য ব্যবহৃত হয়, যাতে মেমরি মুক্ত করা হয় এবং পরবর্তী সময়ে ফাইল ব্যবহার করা যায়।
এই ফাংশনগুলো ব্যবহার করে Erlang-এ খুব সহজেই ফাইল অপারেশন করা সম্ভব, এবং এর মাধ্যমে বড় সিস্টেমে ডেটা সংরক্ষণ, পঠন এবং লেখন কাজ সহজ হয়ে যায়।
Read more