Erlang-এ Binary এবং Text File এর সাথে কাজ করা
Erlang-এ File Handling খুবই গুরুত্বপূর্ণ, কারণ অনেক সময় আমাদের প্রোগ্রাম ডেটা ফাইল থেকে পড়তে বা ফাইলে লিখতে হয়। Erlang এ ফাইলের সাথে কাজ করার জন্য কিছু বিল্ট-ইন ফাংশন রয়েছে যা সহজেই text এবং binary ফাইলের সাথে কাজ করতে সাহায্য করে।
এখানে আমরা দেখব কিভাবে binary এবং text ফাইলের সাথে কাজ করা যায়।
1. Text File এর সাথে কাজ করা
Text Files সাধারণত ASCII বা Unicode চরিত্র দ্বারা গঠিত, যেখানে প্রতিটি লাইনের মধ্যে লেখা থাকে। Erlang এ text file পড়া এবং লেখা সহজেই করা যায়।
1.1 Text File পড়া (Reading a Text File)
Erlang এ file:read_file/1 ফাংশন ব্যবহার করে একটি টেক্সট ফাইল পড়া যেতে পারে। এটি ফাইলটি খুলে তার সমস্ত কনটেন্ট binary আকারে ফেরত দেয়। এরপর, এটি binary:bin_to_list/1 ব্যবহার করে টেক্সটের আকারে রূপান্তর করা যায়।
-module(text_file_example).
-export([read_file/1]).
read_file(FileName) ->
case file:read_file(FileName) of
{ok, Data} ->
io:format("File contents: ~s~n", [binary:bin_to_list(Data)]);
{error, Reason} ->
io:format("Error: ~p~n", [Reason])
end.এখানে:
file:read_file/1: এটি ফাইলটি খুলে পড়ার চেষ্টা করে এবং তার কনটেন্ট ফেরত দেয়।binary:bin_to_list/1: এটি বাইনারি ডেটাকে লিস্টে রূপান্তর করে, যা সহজে পাঠযোগ্য।
উদাহরণ:
1> c(text_file_example).
{ok,text_file_example}
2> text_file_example:read_file("example.txt").
File contents: "This is a sample text file."এখানে, example.txt ফাইলের টেক্সট কনটেন্ট পড়া হয়েছে এবং আউটপুট দেখানো হয়েছে।
1.2 Text File লেখা (Writing to a Text File)
file:write_file/2 ফাংশন ব্যবহার করে টেক্সট ফাইলে লেখা যায়। এই ফাংশনটি একটি binary ডেটা গ্রহণ করে এবং সেটি ফাইলে লেখে।
-module(text_file_example).
-export([write_file/2]).
write_file(FileName, Content) ->
case file:write_file(FileName, Content) of
ok ->
io:format("File written successfully.~n");
{error, Reason} ->
io:format("Error writing to file: ~p~n", [Reason])
end.এখানে:
file:write_file/2: এই ফাংশনটি ফাইলের নাম এবং কনটেন্ট গ্রহণ করে এবং সেগুলি ফাইলে লেখে।
উদাহরণ:
1> c(text_file_example).
{ok,text_file_example}
2> text_file_example:write_file("output.txt", "This is the text content!").
File written successfully.এখানে, output.txt ফাইলে "This is the text content!" লেখা হয়েছে।
2. Binary File এর সাথে কাজ করা
Binary Files হল এমন ফাইল যেখানে ডেটা বাইনারি ফর্ম্যাটে সংরক্ষিত থাকে, এবং এটি সাধারণত non-text ডেটা (যেমন ইমেজ, ভিডিও, বা ডাটা ফাইল) ধারণ করে। Erlang-এ binary file এর সাথে কাজ করা সম্ভব file:read_file/1 এবং file:write_file/2 ফাংশনের মাধ্যমে।
2.1 Binary File পড়া (Reading a Binary File)
Binary ফাইল পড়ার জন্য file:read_file/1 ব্যবহার করা হয়, যা বাইনারি ফর্ম্যাটে ডেটা ফেরত দেয়।
-module(binary_file_example).
-export([read_binary_file/1]).
read_binary_file(FileName) ->
case file:read_file(FileName) of
{ok, Data} ->
io:format("Binary file data: ~p~n", [Data]);
{error, Reason} ->
io:format("Error: ~p~n", [Reason])
end.এখানে, file:read_file/1 বাইনারি ফাইলের ডেটা ফেরত দেয় যা পরে বিভিন্ন উদ্দেশ্যে ব্যবহার করা যেতে পারে।
উদাহরণ:
1> c(binary_file_example).
{ok,binary_file_example}
2> binary_file_example:read_binary_file("image.png").
Binary file data: <<137,80,78,71,13,10,26,10,...>>এখানে, image.png ফাইলের বাইনারি কন্টেন্ট পড়া হয়েছে।
2.2 Binary File লেখা (Writing to a Binary File)
file:write_file/2 ফাংশন ব্যবহার করে বাইনারি ফাইলে লেখা যায়। এটি একটি বাইনারি ডেটা গ্রহণ করে এবং সেগুলি ফাইলে লেখে।
-module(binary_file_example).
-export([write_binary_file/2]).
write_binary_file(FileName, BinaryData) ->
case file:write_file(FileName, BinaryData) of
ok ->
io:format("Binary file written successfully.~n");
{error, Reason} ->
io:format("Error writing binary file: ~p~n", [Reason])
end.এখানে:
file:write_file/2বাইনারি ডেটা লেখার জন্য ব্যবহৃত হয়।
উদাহরণ:
1> c(binary_file_example).
{ok,binary_file_example}
2> binary_file_example:write_binary_file("new_image.png", <<137,80,78,71,13,10,26,10>>).
Binary file written successfully.এখানে, new_image.png ফাইলের মধ্যে বাইনারি ডেটা লেখা হয়েছে।
3. Text এবং Binary File এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Text File | Binary File |
|---|---|---|
| ফাইল কনটেন্ট | ASCII বা Unicode ক্যারেক্টার। | বাইনারি ডেটা (যেমন ইমেজ, অডিও, ভিডিও)। |
| ফাইল আকার | সাধারণত ছোট আকারের, তবে ফাইল কনটেন্ট পাঠযোগ্য। | বড় আকারের, ডেটা পাঠযোগ্য নয়। |
| উদাহরণ | .txt, .csv, .log | .jpg, .png, .mp3, .avi |
| পাঠযোগ্যতা | মানব পাঠযোগ্য। | মানব পাঠযোগ্য নয় (বাইনারি ডেটা)। |
| ডেটা অ্যাক্সেস | লাইনে লাইনে ডেটা অ্যাক্সেস করা যায়। | পুরো ডেটা একসাথে অ্যাক্সেস করা হয়। |
উপসংহার
Erlang এ text file এবং binary file এর সাথে কাজ করার জন্য সহজেই ব্যবহারযোগ্য বিল্ট-ইন ফাংশনগুলো রয়েছে। Text files সাধারণত পাঠযোগ্য ফাইল এবং binary files সাধারণত ডাটা ফাইল, ইমেজ, অডিও বা ভিডিও ধারণ করে। Erlang এর file:read_file/1 এবং file:write_file/2 ফাংশন ব্যবহার করে টেক্সট ও বাইনারি ফাইলের মধ্যে ডেটা পড়া এবং লেখা সম্ভব।
Read more