পিএইচপি ফাইল খোলা/পড়া/বন্ধ
এই অধ্যায়ে আপনি জানবেন কিভাবে সার্ভারে একটি ফাইল খোলা, পড়া এবং বন্ধ করা যায়।
পিএইচপি fopen() ফাংশন ব্যবহার করে ফাইল খোলা
সার্ভারে ফাইল খোলার সবচেয়ে সহজ এবং উত্তম পদ্ধতি হলো fopen() ফাংশন এর ব্যবহার। ফাইল ওপেন করার ক্ষেত্রে এই ফাংশনটি আপনাকে readfile() ফাংশনের তুলনায় অনেক বেশি অপশন এবং সুবিধা প্রদান করবে।
পূর্বের মত এই অধ্যায়েও আমরা "abbreviation.txt" টেক্সট ফাইলটি ব্যবহার করবোঃ
Wi-Fi = Wireless Fidelity <br>
WiMax = Worldwide Interoperability for Microwave Access <br>
GSM = Global System for Mobile communication <br>
CDMA = Code Division Multiple Access <br>
W-CDMA = Wideband Code Division Multiple Access <br>
AMPS = Advance Mobile Phone System <br>
UMTS = Universal Mobile Telecommunication System <br>
IMT = International Mobile Telecommunication <br>
fopen(filename, mode)
- filename-
fopen()
ফাংশনের মাধ্যমে যে ফাইলটি ওপেন করা হবে সেটির নাম নির্দেশ করে। - mode- ফাইলটি যেই মোডে ওপেন হবে সেই মোডকে নির্দেশ করে।
নিচের উদাহরণের মাধ্যমে দেখানো হলো fopen()
ফাংশন ব্যবহার করে কিভাবে একটি ফাইল ওপেন করতে হয় এবং যদি নির্দিষ্ট ফাইলটি ওপেন করা সম্ভব না হয় তাহলে কিভাবে একটি ত্রুটি(error) মেসেজ জেনারেট করতে হয়ঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি fopen() ফাংশনের উদাহরণ</title>
</head>
<body>
<?php
//সার্ভারে ফাইল ওপেন করে এবং সম্ভব না হলে এরর তৈরি করে।
$file = fopen("abbreviation.txt", "r") or die("ফাইলটি ওপেন করা সম্ভব হচ্ছে না!");
//ওপেন করা ফাইল পড়ে
echo fread($file,filesize("abbreviation.txt"));
//ফাইল বন্ধ করে
fclose($file);
?>
</body>
</html>
Wi-Fi = Wireless Fidelity
WiMax = Worldwide Interoperability for Microwave Access
GSM = Global System for Mobile communication
CDMA = Code Division Multiple Access
W-CDMA = Wideband Code Division Multiple Access
AMPS = Advance Mobile Phone System
UMTS = Universal Mobile Telecommunication System
IMT = International Mobile Telecommunication
নিম্নের টেবিলে ফাইল ওপেন এর বিভিন্ন মোড তুলে ধরা হলোঃ
মোড | বিবরণ |
---|---|
r | read only মোডে ফাইল ওপেন করে। ফাইল পয়েন্টার ফাইলের একেবারে প্রথম থেকে আরম্ভ হয়। |
w | write only মোডে ফাইল ওপেন করে। বিদ্যমান ফাইলের সকল কন্টেন্ট মুছে ফেলবে অথবা আগে থেকে ফাইল না থাকলে নতুন ফাইল তৈরি করবে। ফাইল পয়েন্টার ফাইলের একেবারে প্রথম থেকে আরম্ভ হয়। |
a | write only মোডে ফাইল ওপেন করে। বিদ্যমান ফাইলের সকল কন্টেন্ট সংরক্ষিত থাকবে। ফাইল পয়েন্টার ফাইলের একেবারে শেষ থেকে আরম্ভ হয়। পূর্বে থেকে ফাইল না থাকলে নতুন ফাইল তৈরি করবে। |
x | write only মোডে নতুন ফাইল তৈরি করে। যদি পূর্বে থেকে ফাইল বিদ্যমান থাকে তাহলে FALSE এবং error রিটার্ন করবে। |
r+ | read/write মোডে ফাইল ওপেন করে। ফাইল পয়েন্টার ফাইলের একেবারে শুরু থেকে আরম্ভ হয়। |
w+ | read/write মোডে ফাইল ওপেন করে। ফাইলে কোন তথ্য থাকলে মুছে যাবে। অথবা আগে থেকে ফাইল না থাকলে নতুন ফাইল তৈরি করে। ফাইল পয়েন্টার ফাইলের একেবারে প্রথম থেকে আরম্ভ হয়। |
a+ | read/write মোডে ফাইল ওপেন করে। ফাইল থেকে পূর্বর তথ্য মুছে যাবে না, বরং নতুন তথ্য সংযোজন হবে। ফাইল পয়েন্টার ফাইলের একেবারে শেষ থেকে আরম্ভ হয়। এক্ষেত্রে আগে থেকে ফাইল না থাকলে নতুন ফাইল তৈরি করবে। |
x+ | read/write মোডে নতুন ফাইল তৈরি করে। যদি পূর্বে থেকে ফাইল বিদ্যমান থাকে তাহলে FALSE এবং error রিটার্ন করবে। |
fread() ফাংশন ব্যবহার করে পিএইচপি ফাইল পড়া
fread() ফাংশন একটি ওপেন করা ফাইল পড়ে।
fread(filename, fileSize())
- filename-
fread()
ফাংশনের মাধ্যমে যে ফাইলটি ওপেন করা হবে তার নাম নির্দেশ করে। - fileSize()- এই ফাংশনটি যে ফাইলটি ওপেন করা আছে তার সাইজ রিটার্ন করে।
fread($file,filesize("abbreviation.txt"));
উপরের পিএইচপি কোড "abbreviation.txt" ফাইল এর একেবারে প্রথম থেকে শেষ পর্যন্ত পড়বেঃ
fclose() ফাংশন ব্যবহার করে ফাইল বন্ধ করা
একটি ওপেন করা ফাইল বন্ধ করার জন্য fclose() ফাংশন ব্যবহার করা হয়।
কোন ফাইল এর কাজ শেষ হলে সেটিকে বন্ধ করে দেওয়া উচিৎ। কারণ আপনি নিশ্চয়ই চাইবেন না যে একটি ওপেন ফাইল আপনার সার্ভারে ঘুরাঘুরি করে অযথা মেমোরি দখল করে রাখুক!
fclose() ফাংশন ব্যবহার করে আপনি যেই ফাইলটিকে ক্লোজ করতে চান প্যারামিটার হিসাবে সেই ফাইলের নাম অথবা ভ্যারিয়েবলের নাম লাগবে(যার মধ্যে ফাইলটি রাখা হয়েছে)।
<?php
$file = fopen("abbreviation.txt", "r");
// অন্যান্য পিএইচপি কোডসমূহ....
fclose($file);
?>
পিএইচপি fgets() ফাংশন ব্যবহার করে সিঙ্গেল লাইন পড়া
একটি ফাইল থেকে শুধুমাত্র এক লাইন পড়ার জন্য fgets() ফাংশন ব্যবহার করা হয়।
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি fgets() ফাংশন এর মাধ্যমে একক লাইন পাঠ করা</title>
</head>
<body>
<?php
$file = fopen("abbreviation.txt", "r") or die("ফাইলটি ওপেন করা সম্ভব হচ্ছে না!");
echo fgets($file);
fclose($file);
?>
</body>
</html>
Wi-Fi = Wireless Fidelity
বিঃদ্রঃ fgets() ফাংশনকে কল করার পর ফাইল পয়েন্টার পরবর্তী লাইনে অগ্রসর হয়।
পিএইচপি feof() ফাংশন ব্যবহার করে অজানা দৈর্ঘ্যের তথ্য পড়া
eof এর পূর্ণরূপঃ "end-of-file"।
পিএইচপি feof() ফাংশন ফাইল পয়েন্টার ফাইলের শেষে পৌছেছে কিনা চেক করে।
অজানা দৈর্ঘ্য বিশিষ্ট তথ্যকে Loop করার জন্য feof() ফাংশনটি বেশ উপকারী।
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি feof() ফাংশন ব্যবহার করে লাইন বাই লাইন পড়া</title>
</head>
<body>
<?php
$file = fopen("abbreviation.txt", "r") or die("ফাইলটি ওপেন করা সম্ভব হচ্ছে না!");
// ফাইলের শেষ পর্যন্ত প্রত্যেক লাইন আউটপুট নিবে
while(!feof($file)) {
echo fgets($file) . "<br>";
}
fclose($file);
?>
</body>
</html>
Wi-Fi = Wireless Fidelity
WiMax = Worldwide Interoperability for Microwave Access
GSM = Global System for Mobile communication
CDMA = Code Division Multiple Access
W-CDMA = Wideband Code Division Multiple Access
AMPS = Advance Mobile Phone System
UMTS = Universal Mobile Telecommunication System
IMT = International Mobile Telecommunication
পিএইচপি fgetc() ফাংশন ব্যবহার করে সিঙ্গেল ক্যারেক্টার পড়া
একটি ফাইলের একটি একক ক্যারক্টার বা অক্ষর পড়ার জন্য fgetc() ফাংশন ব্যবহার করা হয়।
নিচের উদাহরণে "abbreviation.txt" ফাইলটিকে ক্যারেক্টার বাই ক্যারেক্টার পড়বে, যতক্ষন না পর্যন্ত শেষ লাইনে পৌছায়ঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি fgetc() ফাংশন ব্যবহার করে ক্যারেক্টার বাই ক্যারক্টার পড়া পড়া</title>
</head>
<body>
<?php
$file = fopen("abbreviation.txt", "r") or die("ফাইলটি ওপেন করা সম্ভব হচ্ছে না!");
// ফাইলের শেষ পর্যন্ত প্রত্যেক ক্যারেক্টার আউটপুট নিবে
while(!feof($file)) {
echo fgetc($file);
}
fclose($file);
?>
</body>
</html>
Wi-Fi = Wireless Fidelity
WiMax = Worldwide Interoperability for Microwave Access
GSM = Global System for Mobile communication
CDMA = Code Division Multiple Access
W-CDMA = Wideband Code Division Multiple Access
AMPS = Advance Mobile Phone System
UMTS = Universal Mobile Telecommunication System
IMT = International Mobile Telecommunication
নোটঃ fgetc() ফাংশনকে কল করার পর ফাইল পয়েন্টার পরবর্তী ক্যারক্টারে অগ্রসর হয়।