টিসিএল (Tcl) - ফাইল I/O অপারেশনস: Open, Read, Write, এবং Close
ফাইল I/O (Input/Output) অপারেশনস টিসিএল-এ ফাইলের সাথে যোগাযোগ করার জন্য ব্যবহৃত হয়, যেমন ফাইল খোলা, ফাইলের মধ্যে ডেটা লেখা, ডেটা পড়া এবং ফাইল বন্ধ করা। টিসিএল-এ ফাইল I/O অপারেশনস খুব সহজে এবং কার্যকরীভাবে করা যায়। এটি টেক্সট ফাইল, ডেটা ফাইল বা যেকোনো ধরনের ফাইলের জন্য ব্যবহার করা যায়।
এখানে ফাইল I/O অপারেশনস এর উপর বিস্তারিত আলোচনা করা হলো।
১. ফাইল ওপেন করা (Opening a File)
ফাইল ওপেন করতে open কমান্ড ব্যবহার করা হয়। এটি একটি ফাইলের সাথে সম্পর্কিত একটি ফাইল ডেসক্রিপ্টর (file descriptor) প্রদান করে যা পরবর্তী অপারেশনগুলির জন্য ব্যবহার করা হয়। open কমান্ডটি দুটি প্যারামিটার গ্রহণ করে:
- প্রথম প্যারামিটার: ফাইলের নাম (পথসহ, যেমন
"myfile.txt")। - দ্বিতীয় প্যারামিটার: মোড, যেমন
"r"(পড়ার জন্য),"w"(লেখার জন্য),"a"(অ্যাপেন্ড/যোগ করার জন্য) ইত্যাদি।
উদাহরণ:
set fileId [open "example.txt" "w"]এখানে, "example.txt" নামক ফাইলটি "w" মোডে (লেখার জন্য) খোলা হয়েছে এবং fileId ভেরিয়েবলটি ফাইল ডেসক্রিপ্টর ধারণ করছে।
২. ফাইলের মধ্যে লেখা (Writing to a File)
ফাইলের মধ্যে কিছু লেখা হলে, আপনি puts বা write কমান্ড ব্যবহার করতে পারেন। puts সাধারণত টেক্সট লেখা এবং write বাইনারি ডেটা লেখার জন্য ব্যবহৃত হয়।
উদাহরণ - puts ব্যবহার করে লেখা:
set fileId [open "example.txt" "w"]
puts $fileId "Hello, World!"
close $fileIdএখানে, "Hello, World!" স্ট্রিংটি "example.txt" ফাইলের মধ্যে লেখা হয়েছে এবং পরে ফাইলটি বন্ধ করা হয়েছে।
উদাহরণ - write ব্যবহার করে লেখা:
set fileId [open "example.bin" "w"]
set data "Some binary data"
fconfigure $fileId -translation binary
puts -nonewline $fileId $data
close $fileIdএখানে, write (বা puts যখন বাইনারি ডেটা ব্যবহৃত হয়) কমান্ডের মাধ্যমে একটি বাইনারি ডেটা "example.bin" ফাইলের মধ্যে লেখা হয়েছে।
৩. ফাইল থেকে পড়া (Reading from a File)
ফাইল থেকে ডেটা পড়তে gets বা read কমান্ড ব্যবহার করা হয়। gets এক লাইনের ডেটা পড়ে এবং read পুরো ফাইলের ডেটা একবারে পড়ে।
উদাহরণ - gets ব্যবহার করে পড়া:
set fileId [open "example.txt" "r"]
set line [gets $fileId]
puts $line
close $fileIdএখানে, gets কমান্ডটি "example.txt" ফাইলের প্রথম লাইনটি পড়ে এবং puts দিয়ে সেটি প্রিন্ট করা হয়েছে।
উদাহরণ - read ব্যবহার করে পড়া:
set fileId [open "example.txt" "r"]
set content [read $fileId]
puts $content
close $fileIdএখানে, read কমান্ডটি পুরো ফাইলের সব ডেটা পড়ে এবং puts দিয়ে সেটি প্রিন্ট করা হয়েছে।
৪. ফাইল বন্ধ করা (Closing a File)
ফাইলের সমস্ত অপারেশন শেষ হলে, close কমান্ড ব্যবহার করে ফাইলটি বন্ধ করা হয়। এটি ফাইলের সাথে সম্পর্কিত ফাইল ডেসক্রিপ্টর বন্ধ করে দেয় এবং যে কোনও ফাইল অপারেশন শেষে এটি খুবই গুরুত্বপূর্ণ।
উদাহরণ:
set fileId [open "example.txt" "w"]
puts $fileId "This is a test."
close $fileIdএখানে, ফাইল লিখে ফাইলটি বন্ধ করা হয়েছে। এটি গুরুত্বপূর্ণ, কারণ ফাইল বন্ধ না করলে ডেটা সেভ না হতে পারে বা ফাইলটি লক থাকতে পারে।
৫. ফাইল মোডস (File Modes)
ফাইল ওপেন করার সময় টিসিএল বিভিন্ন মোড সমর্থন করে:
"r": ফাইলটি পড়ার জন্য (ফাইলটি যদি না থাকে তবে ত্রুটি ঘটবে)।"w": ফাইলটি লেখার জন্য (ফাইলটি না থাকলে তৈরি হবে, এবং পূর্ববর্তী ডেটা মুছে যাবে)।"a": ফাইলটি অ্যাপেন্ড (যোগ) করার জন্য (ফাইলটি না থাকলে তৈরি হবে এবং বর্তমান ডেটার শেষে নতুন ডেটা যুক্ত হবে)।"r+": ফাইলটি পড়ার এবং লেখার জন্য (ফাইলটি না থাকলে ত্রুটি ঘটবে)।"w+": ফাইলটি পড়ার এবং লেখার জন্য (ফাইলটি না থাকলে তৈরি হবে এবং পুরানো ডেটা মুছে যাবে)।"a+": ফাইলটি পড়ার এবং অ্যাপেন্ড (যোগ) করার জন্য (ফাইলটি না থাকলে তৈরি হবে এবং পুরানো ডেটা অপরিবর্তিত থাকবে)।
উদাহরণ:
set fileId [open "example.txt" "r+"] ;# পড়ার এবং লেখার জন্য খোলা৬. ফাইলের শেষ অবস্থা পরীক্ষা (Checking End of File - EOF)
eof কমান্ড ব্যবহার করে আপনি চেক করতে পারেন যে ফাইলের শেষ পর্যন্ত পৌঁছানো হয়েছে কিনা। এটি সাধারণত ফাইলের শেষ পর্যন্ত পড়া হয়ে গেলে ব্যবহার করা হয়।
উদাহরণ:
set fileId [open "example.txt" "r"]
while {![eof $fileId]} {
set line [gets $fileId]
puts $line
}
close $fileIdএখানে, while লুপটি ফাইলের শেষ না হওয়া পর্যন্ত একের পর এক লাইন পড়ে এবং puts দিয়ে প্রিন্ট করে।
উপসংহার
টিসিএল-এ ফাইল I/O অপারেশনস যেমন ফাইল ওপেন, ফাইল পড়া, ফাইল লেখা এবং ফাইল বন্ধ করা খুবই সহজ এবং শক্তিশালী। open, puts, gets, close, read, write ইত্যাদি কমান্ড ব্যবহার করে আপনি ফাইলের সাথে কার্যকরভাবে কাজ করতে পারেন। এই ফাংশনালিটি ব্যবহার করে আপনি ফাইলের মধ্যে ডেটা সংরক্ষণ, ডেটা পড়া, এবং বিভিন্ন ধরনের ফাইল অপারেশন সম্পাদন করতে পারেন।
Read more