Java-এর java.io প্যাকেজ দুটি প্রধান ধরনের স্ট্রিম সরবরাহ করে: Byte Streams এবং Character Streams। এই দুটি স্ট্রিম I/O অপারেশনগুলিকে পরিচালনা করার জন্য ব্যবহৃত হয়, তবে তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে, যা তাদের ব্যবহার এবং কার্যকারিতা প্রভাবিত করে।
1. Byte Streams (বাইট স্ট্রিম)
Byte Streams ডেটাকে 8-বিট (byte) আকারে পড়ে এবং লেখে। এগুলি সাধারণত binary data (যেমন ইমেজ, অডিও, ভিডিও, বা অন্য বাইনারি ফাইল) পরিচালনা করার জন্য ব্যবহৃত হয়। এই স্ট্রিমগুলো সমস্ত ধরনের I/O ডেটা সমর্থন করে, তবে তারা বিশেষভাবে binary data এর জন্য ডিজাইন করা হয়েছে।
- ক্লাস:
InputStream,OutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedOutputStream, ইত্যাদি। - ডেটা টাইপ: বাইট (byte) - 8-বিট ডেটা।
- ব্যবহার: ফাইল বা নেটওয়ার্কের বাইনারি ডেটা পড়া বা লেখা।
- উদাহরণ: ইমেজ ফাইল, অডিও ফাইল, বা ডাটাবেস ফাইল ইত্যাদি।
Byte Streams উদাহরণ:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("input.txt");
FileOutputStream fos = new FileOutputStream("output.txt")) {
int byteData;
while ((byteData = fis.read()) != -1) {
fos.write(byteData); // Read byte by byte and write it to output
}
System.out.println("File copied successfully using Byte Streams.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- FileInputStream এবং FileOutputStream ব্যবহার করে byte-by-byte ডেটা পড়া এবং লেখা হচ্ছে।
2. Character Streams (ক্যারেক্টার স্ট্রিম)
Character Streams ডেটাকে 16-বিট (character) আকারে পড়ে এবং লেখে। এগুলি সাধারণত text data (যেমন টেক্সট ফাইল, স্ট্রিং) পরিচালনা করার জন্য ব্যবহৃত হয়। Character Streams ইন্টারনালি UTF-8 বা UTF-16 এনকোডিং ব্যবহার করে, যা আন্তর্জাতিক ভাষা সমর্থন করে এবং টেক্সট ডেটার জন্য উপযুক্ত।
- ক্লাস:
Reader,Writer,FileReader,FileWriter,BufferedReader,BufferedWriter, ইত্যাদি। - ডেটা টাইপ: ক্যারেক্টার (character) - 16-বিট ডেটা।
- ব্যবহার: টেক্সট ডেটা পড়া বা লেখা।
- উদাহরণ: টেক্সট ফাইল, কনফিগারেশন ফাইল, স্ট্রিং ইত্যাদি।
Character Streams উদাহরণ:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CharacterStreamExample {
public static void main(String[] args) {
try (FileReader fr = new FileReader("input.txt");
FileWriter fw = new FileWriter("output.txt")) {
int charData;
while ((charData = fr.read()) != -1) {
fw.write(charData); // Read char by char and write it to output
}
System.out.println("File copied successfully using Character Streams.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- FileReader এবং FileWriter ব্যবহার করে character-by-character ডেটা পড়া এবং লেখা হচ্ছে।
Byte Streams এবং Character Streams এর মধ্যে পার্থক্য:
| বিষয় | Byte Streams | Character Streams |
|---|---|---|
| ডেটা টাইপ | 8-বিট বাইট (byte) | 16-বিট ক্যারেক্টার (character) |
| ডেটা টাইপ সমর্থন | Binary Data (যেমন ইমেজ, অডিও, ভিডিও ফাইল) | Text Data (যেমন টেক্সট ফাইল, কনফিগারেশন ফাইল) |
| ক্লাস | InputStream, OutputStream, FileInputStream, FileOutputStream | Reader, Writer, FileReader, FileWriter |
| স্ট্রিম অপারেশন | ডেটা byte-by-byte পড়া এবং লেখা হয়। | ডেটা character-by-character পড়া এবং লেখা হয়। |
| ব্যবহার | বাইনারি ফাইল পড়া বা লেখা (যেমন ইমেজ, ভিডিও, অডিও) | টেক্সট ফাইল পড়া বা লেখা |
| অন্যান্য বৈশিষ্ট্য | অধিকাংশ বাইনারি ডেটা, UTF-8 বা UTF-16 এনকোডিং সমর্থন নেই | আন্তর্জাতিক ভাষা সমর্থন করে, UTF-8 বা UTF-16 এনকোডিং ব্যবহৃত |
| অপারেশন গতি | সাধারণত দ্রুত (বাইনারি ডেটার জন্য) | কিছুটা ধীর (যেহেতু এতে এনকোডিং এবং ডিকোডিং প্রক্রিয়া থাকে) |
- Byte Streams সাধারণত binary data (যেমন ইমেজ, অডিও) পড়া বা লেখার জন্য ব্যবহৃত হয় এবং Character Streams টেক্সট ডেটার জন্য ব্যবহার করা হয়।
- Byte Streams 8-বিট ডেটা প্রসেস করে এবং Character Streams 16-বিট ক্যারেক্টার প্রসেস করে, যা বিভিন্ন ভাষার টেক্সট ডেটা সহ্য করার জন্য প্রযোজ্য।
- Byte Streams বেশি কার্যকরী binary data পড়তে এবং লিখতে, এবং Character Streams টেক্সট ডেটা পরিচালনা করতে ভাল।
Java তে সঠিক স্ট্রিমের নির্বাচন করার সময় আপনাকে নিশ্চিত করতে হবে যে আপনি কোন ধরনের ডেটার সাথে কাজ করছেন (বাইনারি না টেক্সট) এবং সেই অনুযায়ী স্ট্রিম ব্যবহার করবেন।
Read more