FileInputStream এবং FileOutputStream হল Java I/O (Input/Output) প্যাকেজের দুটি গুরুত্বপূর্ণ ক্লাস, যা byte stream এর অংশ। এই ক্লাসগুলি বাইনারি ডেটা (যেমন ইমেজ, অডিও, ভিডিও, বা অন্য কোনো বাইনারি ফাইল) পড়তে এবং লেখতে ব্যবহৃত হয়।
এগুলি InputStream এবং OutputStream এর সাবক্লাস, যথাক্রমে, যা Java-তে ফাইল I/O (ফাইল থেকে ডেটা পড়া এবং ফাইলে ডেটা লেখা) করতে ব্যবহৃত হয়। FileInputStream ফাইল থেকে বাইনারি ডেটা পড়ে এবং FileOutputStream ফাইলে বাইনারি ডেটা লেখে।
FileInputStream এর ধারণা
FileInputStream ক্লাসটি byte stream এর একটি সদস্য, যা ফাইল থেকে বাইনারি ডেটা পড়ার জন্য ব্যবহৃত হয়। এটি InputStream ক্লাসের একটি সাবক্লাস এবং read() মেথডের মাধ্যমে ফাইলের প্রতিটি বাইট পড়ে।
FileInputStream এর প্রধান মেথড:
int read(): একটি বাইট পড়ে এবং int আকারে রিটার্ন করে (EOF হলে -1 রিটার্ন করে)।int read(byte[] b): একটি বাফারে একাধিক বাইট পড়ে।long skip(long n): স্ট্রিম থেকেnবাইট উপেক্ষা করে।int available(): স্ট্রিমে পড়ার জন্য কতটুকু ডেটা আছে তা রিটার্ন করে।void close(): স্ট্রিমটি বন্ধ করে।
FileInputStream উদাহরণ:
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("example.txt")) {
int byteData;
while ((byteData = fis.read()) != -1) { // ফাইল থেকে একটি বাইট পড়া
System.out.print((char) byteData); // বাইটকে ক্যারেক্টারে কনভার্ট করে প্রিন্ট করা
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
FileInputStreamব্যবহার করেexample.txtফাইল থেকে ডেটা পড়া হচ্ছে।read()মেথড প্রতিবার একটি বাইট পড়ে এবং তা ক্যারেক্টারে কনভার্ট করে কনসোলে প্রিন্ট করা হচ্ছে।
FileOutputStream এর ধারণা
FileOutputStream ক্লাসটি byte stream এর একটি সদস্য, যা ফাইলে বাইনারি ডেটা লেখার জন্য ব্যবহৃত হয়। এটি OutputStream ক্লাসের একটি সাবক্লাস এবং write() মেথডের মাধ্যমে ফাইলে ডেটা লেখা হয়।
FileOutputStream এর প্রধান মেথড:
void write(int b): একটি বাইট লেখে।void write(byte[] b): একাধিক বাইট একটি বাফারে লেখে।void flush(): সমস্ত ডেটা স্ট্রিমে পাঠানোর জন্য ফ্লাশ করে।void close(): স্ট্রিমটি বন্ধ করে।
FileOutputStream উদাহরণ:
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamExample {
public static void main(String[] args) {
String data = "Hello, this is a test file!";
try (FileOutputStream fos = new FileOutputStream("output.txt")) {
fos.write(data.getBytes()); // স্ট্রিংকে বাইট অ্যারে হিসেবে রূপান্তর করে ফাইলে লেখা
System.out.println("Data written to file successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
FileOutputStreamব্যবহার করেoutput.txtফাইলে ডেটা লেখা হচ্ছে।data.getBytes()মেথডটি স্ট্রিংকে byte array-তে রূপান্তরিত করে এবং তারপরfos.write()মেথড দ্বারা ফাইলে লেখা হয়।
FileInputStream এবং FileOutputStream এর মূল বৈশিষ্ট্য:
- Byte Stream:
FileInputStreamএবংFileOutputStreamহল byte stream ক্লাস, অর্থাৎ এগুলি ৮-বিট বাইনারি ডেটা পড়া এবং লেখার জন্য ব্যবহৃত হয়।
- File I/O:
FileInputStreamফাইল থেকে ডেটা পড়তে ব্যবহৃত হয় এবংFileOutputStreamফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়।
- ব্যবহারের উপযুক্ত ক্ষেত্র:
- যখন আপনাকে বাইনারি ফাইল (যেমন ইমেজ, অডিও, ভিডিও, PDF) পড়তে বা লেখতে হয়, তখন এই ক্লাস দুটি ব্যবহার করা হয়।
- ডেটা একবারে একটি বাইট পড়া বা লেখা:
read()এবংwrite()মেথডে একটি বাইট পড়া বা লেখা হয়, যা তুলনামূলকভাবে ধীর হতে পারে যখন বড় ডেটা নিয়ে কাজ করা হয়।
FileInputStream এবং FileOutputStream এর সুবিধা এবং সীমাবদ্ধতা
সুবিধা:
- বাইনারি ডেটা প্রক্রিয়া: এই ক্লাস দুটি binary data পড়তে এবং লেখতে সহায়ক।
- সহজ এবং কার্যকরী: FileInputStream এবং FileOutputStream খুব সহজে ফাইল থেকে ডেটা পড়া এবং ফাইলে ডেটা লেখা করতে সহায়ক।
- ফাইলের সাথেও কাজ করা যায়: এই ক্লাস দুটি ফাইল সিস্টেমের সাথে কাজ করার জন্য উপযুক্ত।
সীমাবদ্ধতা:
- টেক্সট ডেটার জন্য উপযুক্ত নয়: Character Streams টেক্সট ডেটার জন্য বেশি কার্যকরী। FileReader বা BufferedReader ব্যবহার করা উচিত।
- এনকোডিং সমস্যা: বাইনারি ডেটার সাথে কাজ করার সময় কিছু encoding সমস্যা হতে পারে, বিশেষ করে টেক্সট ফাইলের ক্ষেত্রে।
FileInputStreamএবংFileOutputStreamহল Java-র গুরুত্বপূর্ণ byte stream ক্লাস, যা ফাইল থেকে বাইনারি ডেটা পড়া এবং ফাইলে বাইনারি ডেটা লেখা করতে ব্যবহৃত হয়।- এগুলি Binary Files (যেমন ইমেজ, অডিও, ভিডিও) সঠিকভাবে পরিচালনা করার জন্য বিশেষভাবে উপযুক্ত।
- Character Streams যেমন
FileReaderএবংFileWriterটেক্সট ফাইলের জন্য বেশি কার্যকরী, কিন্তু FileInputStream এবং FileOutputStream বাইনারি ডেটা হ্যান্ডলিংয়ের জন্য আদর্শ।
Read more