Java.io প্যাকেজে DataInputStream এবং DataOutputStream ক্লাস দুটি প্রধানভাবে প্রিমিটিভ ডেটা টাইপ যেমন int, float, double, boolean, char ইত্যাদি পড়া এবং লেখা জন্য ব্যবহৃত হয়। এগুলি binary data (বাইনারি ডেটা) স্ট্রিমের মাধ্যমে ডেটা ট্রান্সফার করতে সক্ষম এবং তারা ডেটাকে platform-independent format এ সেভ করে, যা portability এবং পারফরম্যান্স উন্নত করে।
এই ক্লাসগুলো byte streams (বাইনারি স্ট্রিম) হিসেবে কাজ করে, অর্থাৎ ডেটা byte-by-byte পাঠানো এবং গ্রহণ করা হয়।
DataInputStream এবং DataOutputStream এর ভূমিকা
1. DataInputStream:
DataInputStream ক্লাসটি ফাইল, নেটওয়ার্ক সেশন বা অন্য কোনো স্ট্রিম থেকে প্রিমিটিভ ডেটা টাইপ (যেমন int, long, float, double, char, boolean) পড়তে ব্যবহৃত হয়।
DataInputStream এর মেথড:
readInt(): ফাইল বা স্ট্রিম থেকেintটাইপ ডেটা পড়ে।readFloat():floatটাইপ ডেটা পড়ে।readDouble():doubleটাইপ ডেটা পড়ে।readBoolean():booleanটাইপ ডেটা পড়ে।readUTF(): UTF স্ট্রিং পড়ে।
2. DataOutputStream:
DataOutputStream ক্লাসটি ফাইল, নেটওয়ার্ক সেশন বা অন্য কোনো স্ট্রিমে প্রিমিটিভ ডেটা টাইপ লেখার জন্য ব্যবহৃত হয়।
DataOutputStream এর মেথড:
writeInt(int v):intটাইপ ডেটা লেখে।writeFloat(float v):floatটাইপ ডেটা লেখে।writeDouble(double v):doubleটাইপ ডেটা লেখে।writeBoolean(boolean v):booleanটাইপ ডেটা লেখে।writeUTF(String str): UTF স্ট্রিং লেখে।
DataInputStream এবং DataOutputStream এর ব্যবহার
১. DataOutputStream এর মাধ্যমে ডেটা লেখা
এই উদাহরণে আমরা DataOutputStream ব্যবহার করে কিছু প্রিমিটিভ ডেটা একটি ফাইলে লেখব।
import java.io.*;
public class DataOutputStreamExample {
public static void main(String[] args) {
try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("datafile.dat"))) {
// Writing different types of data
dos.writeInt(100);
dos.writeFloat(3.14f);
dos.writeDouble(7.89);
dos.writeBoolean(true);
dos.writeUTF("Hello, DataOutputStream!");
System.out.println("Data written to file successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
writeInt(),writeFloat(),writeDouble(),writeBoolean(), এবংwriteUTF()মেথড দ্বারা বিভিন্ন ডেটা টাইপ ফাইলে লেখা হয়েছে।
আউটপুট:
Data written to file successfully!
এই ডেটাগুলি datafile.dat নামক ফাইলে লেখা হবে।
২. DataInputStream এর মাধ্যমে ডেটা পড়া
এখন, DataInputStream ব্যবহার করে datafile.dat ফাইল থেকে ডেটা পড়ব।
import java.io.*;
public class DataInputStreamExample {
public static void main(String[] args) {
try (DataInputStream dis = new DataInputStream(new FileInputStream("datafile.dat"))) {
// Reading different types of data
int intValue = dis.readInt();
float floatValue = dis.readFloat();
double doubleValue = dis.readDouble();
boolean booleanValue = dis.readBoolean();
String stringValue = dis.readUTF();
System.out.println("Read data from file:");
System.out.println("Int: " + intValue);
System.out.println("Float: " + floatValue);
System.out.println("Double: " + doubleValue);
System.out.println("Boolean: " + booleanValue);
System.out.println("String: " + stringValue);
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
readInt(),readFloat(),readDouble(),readBoolean(), এবংreadUTF()মেথড দ্বারা ডেটা পড়া হয়েছে, যা আগের উদাহরণে DataOutputStream দ্বারা লেখা হয়েছিল।
আউটপুট:
Read data from file:
Int: 100
Float: 3.14
Double: 7.89
Boolean: true
String: Hello, DataOutputStream!
DataInputStream এবং DataOutputStream এর সুবিধা
- Primitive Data Handling: DataInputStream এবং DataOutputStream আপনাকে primitive types (যেমন
int,float,boolean,char, ইত্যাদি) দ্রুত এবং সহজভাবে স্ট্রিমে পাঠাতে এবং গ্রহণ করতে সহায়ক। - Portable Format: ডেটা স্টোর করার জন্য platform-independent format ব্যবহার হয়, যা এক প্ল্যাটফর্ম থেকে অন্য প্ল্যাটফর্মে ডেটা পাঠানোর সময় ডেটার অখণ্ডতা রক্ষা করে।
- Type Safety: ডেটা লেখার সময় প্রতিটি ডেটা টাইপের জন্য নির্দিষ্ট মেথড রয়েছে, যা type safety নিশ্চিত করে। যেমন
writeInt()শুধুমাত্রintটাইপ ডেটা গ্রহণ করবে, এবংreadInt()শুধুমাত্রintটাইপ ডেটা পড়বে। - Efficient I/O: বাইনারি স্ট্রিম ব্যবহারের কারণে এটি অনেক দ্রুত I/O অপারেশন নিশ্চিত করে, বিশেষত প্রিমিটিভ ডেটা টাইপের ক্ষেত্রে।
- DataInputStream এবং DataOutputStream ক্লাসগুলি primitive data types লিখতে এবং পড়তে অত্যন্ত কার্যকরী। এগুলি স্ট্রিম ভিত্তিক অপারেশন, যা I/O পারফরম্যান্স উন্নত করে।
- এগুলি binary data পাঠানোর জন্য ব্যবহৃত হয় এবং প্রতিটি ডেটা টাইপের জন্য আলাদা মেথড সরবরাহ করে, যা ডেটা পাঠানোর প্রক্রিয়াকে আরও সুরক্ষিত এবং সহজ করে তোলে।
এই ক্লাসগুলির মাধ্যমে আপনি serializing এবং deserializing ডেটা করতে পারেন, যা বিভিন্ন ধরনের network বা file-based I/O অপারেশনগুলির জন্য অত্যন্ত কার্যকরী।
DataInputStream এবং DataOutputStream ক্লাস দুটি Java I/O প্যাকেজের অন্তর্গত, এবং এগুলি প্রিমিটিভ ডেটা টাইপ (যেমন int, float, boolean, ইত্যাদি) স্ট্রিম থেকে পড়তে এবং লেখার জন্য ব্যবহৃত হয়। এগুলি binary data পড়া এবং লেখার জন্য উপযোগী এবং তারা দ্বিতীয় স্তরের স্ট্রিম হিসেবে কাজ করে।
এই ক্লাসগুলির সাহায্যে আপনি প্রিমিটিভ ডেটা স্ট্রিমে পড়তে এবং লিখতে পারবেন, যা সিস্টেমের নির্দিষ্ট byte order অনুযায়ী ডেটা স্টোর করে। এর মানে হল যে, যখন আপনি DataOutputStream ব্যবহার করে ডেটা লেখেন এবং DataInputStream ব্যবহার করে তা পড়েন, তখন ডেটা সঠিকভাবে ফরম্যাট করা থাকে, এবং কোন সমস্যা ছাড়াই এটি পুনরুদ্ধার করা যায়।
DataInputStream
DataInputStream হল একটি InputStream এর সাবক্লাস যা binary data পড়তে ব্যবহৃত হয়। এটি বিভিন্ন প্রিমিটিভ ডেটা টাইপ পড়ার জন্য ব্যবহৃত হয়, যেমন int, float, double, boolean, এবং UTF স্ট্রিং। এটি ডেটাকে সিস্টেমের নির্দিষ্ট ফরম্যাটে পড়তে পারে, যা ডেটা serialization এবং deserialization এর জন্য গুরুত্বপূর্ণ।
DataInputStream এর মেথড:
read(): একটি বাইট পড়ে।readInt(): একটিintপড়ে।readFloat(): একটিfloatপড়ে।readBoolean(): একটিbooleanপড়ে।readUTF(): একটি UTF স্ট্রিং পড়ে।skip(long n): স্ট্রিম থেকে নির্দিষ্ট পরিমাণ বাইট উপেক্ষা করে।available(): স্ট্রিম থেকে কতটুকু ডেটা পড়া সম্ভব তা রিটার্ন করে।
DataOutputStream
DataOutputStream হল একটি OutputStream এর সাবক্লাস যা binary data লেখার জন্য ব্যবহৃত হয়। এটি ডেটা স্ট্রিমে বিভিন্ন প্রিমিটিভ ডেটা টাইপ (যেমন int, float, boolean, ইত্যাদি) লেখার জন্য ব্যবহৃত হয় এবং এটি ডেটাকে সিস্টেমের নির্দিষ্ট ফরম্যাটে লেখে। এটি serialization এবং deserialization এর জন্য সুবিধাজনক।
DataOutputStream এর মেথড:
write(int b): একটি বাইট লেখে।writeInt(int v): একটিintলেখে।writeFloat(float v): একটিfloatলেখে।writeBoolean(boolean v): একটিbooleanলেখে।writeUTF(String str): একটি UTF স্ট্রিং লেখে।flush(): স্ট্রিমে সমস্ত ডেটা পাঠানোর জন্য ব্যবহৃত হয়।close(): স্ট্রিমটি বন্ধ করে।
DataInputStream এবং DataOutputStream এর উদাহরণ
১. DataOutputStream এর মাধ্যমে ডেটা লেখা এবং DataInputStream এর মাধ্যমে ডেটা পড়া
ফাইল থেকে int, float, boolean এবং String লেখার এবং পড়ার উদাহরণ:
import java.io.*;
public class DataStreamExample {
public static void main(String[] args) {
// FileOutputStream এবং DataOutputStream দিয়ে ডেটা লেখা
try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.dat"))) {
dos.writeInt(123); // int লেখুন
dos.writeFloat(3.14f); // float লেখুন
dos.writeBoolean(true); // boolean লেখুন
dos.writeUTF("Hello, Java!"); // String (UTF format) লেখুন
System.out.println("Data written to file successfully!");
} catch (IOException e) {
e.printStackTrace();
}
// FileInputStream এবং DataInputStream দিয়ে ডেটা পড়া
try (DataInputStream dis = new DataInputStream(new FileInputStream("data.dat"))) {
int intValue = dis.readInt(); // int পড়ুন
float floatValue = dis.readFloat(); // float পড়ুন
boolean booleanValue = dis.readBoolean(); // boolean পড়ুন
String stringValue = dis.readUTF(); // String (UTF format) পড়ুন
// পড়া ডেটা প্রদর্শন
System.out.println("Read values from file:");
System.out.println("int: " + intValue);
System.out.println("float: " + floatValue);
System.out.println("boolean: " + booleanValue);
System.out.println("String: " + stringValue);
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- DataOutputStream দ্বারা data.dat ফাইলে
int,float,boolean, এবংString(UTF format) ডেটা লেখা হচ্ছে। - পরে, DataInputStream ব্যবহার করে সেই ফাইল থেকে ডেটা পড়া হচ্ছে এবং কনসোলে প্রিন্ট করা হচ্ছে।
আউটপুট:
Data written to file successfully!
Read values from file:
int: 123
float: 3.14
boolean: true
String: Hello, Java!
DataInputStream এবং DataOutputStream এর সুবিধা
- প্রিমিটিভ ডেটা টাইপ হ্যান্ডলিং:
- DataInputStream এবং DataOutputStream ক্লাসগুলি বিশেষভাবে প্রিমিটিভ ডেটা টাইপ (যেমন
int,float,boolean,Stringইত্যাদি) স্ট্রিমে পড়া এবং লেখার জন্য ডিজাইন করা হয়েছে। এটি ডেটা ফরম্যাটের সঠিকতা নিশ্চিত করে।
- DataInputStream এবং DataOutputStream ক্লাসগুলি বিশেষভাবে প্রিমিটিভ ডেটা টাইপ (যেমন
- স্ট্রিমে সিকোয়েন্সিয়াল রিড/রাইট:
- এই ক্লাসগুলি ডেটা পড়ার এবং লেখার প্রক্রিয়াকে সিকোয়েন্সিয়ালি (একটির পর একটি) প্রক্রিয়া করে, যা ফাইল বা স্ট্রিমের সাথে সহজে কাজ করার সুযোগ দেয়।
- সহজভাবে Serialization এবং Deserialization:
- DataOutputStream এবং DataInputStream ব্যবহার করে আপনি সোজাসুজি serialization এবং deserialization করতে পারবেন, যা Java অবজেক্টের স্ট্রিমিংয়ের জন্য কার্যকর।
- Cross-platform I/O:
- DataInputStream এবং DataOutputStream সমস্ত প্ল্যাটফর্মে একই ফরম্যাটে ডেটা পড়তে এবং লিখতে সক্ষম, কারণ এটি সিস্টেমের Endian বৈশিষ্ট্য অনুসরণ করে ডেটা পাঠায় এবং গ্রহণ করে।
- DataInputStream এবং DataOutputStream Java I/O সিস্টেমের অত্যন্ত গুরুত্বপূর্ণ ক্লাস যা প্রিমিটিভ ডেটা টাইপ পড়া এবং লেখার জন্য ব্যবহৃত হয়।
- এগুলি binary data পরিচালনা করার জন্য কার্যকরী এবং সিস্টেমের byte order অনুযায়ী ডেটা স্টোর এবং পুনরুদ্ধার করতে সহায়ক।
- DataInputStream এবং DataOutputStream ক্লাসগুলি ডেটা serialization এবং deserialization এর জন্য খুবই কার্যকরী এবং ফাইল বা স্ট্রিমে প্রিমিটিভ ডেটা পরিচালনা করার জন্য আদর্শ।
Java.io প্যাকেজে, প্রিমিটিভ ডেটা টাইপ যেমন int, float, boolean ইত্যাদি পড়া এবং লেখা করার জন্য DataInputStream এবং DataOutputStream ক্লাস দুটি ব্যবহৃত হয়। এই ক্লাসগুলো বাইনারি ফরম্যাটে ডেটা পড়তে এবং লিখতে সক্ষম, এবং এটি বিশেষভাবে ব্যবহার করা হয় যখন আপনি বিভিন্ন প্রিমিটিভ ডেটা টাইপ (যেমন int, float, boolean ইত্যাদি) ফাইল বা স্ট্রিমে পরিচালনা করতে চান।
- DataInputStream: এটি একটি ক্লাস যা প্রিমিটিভ ডেটা টাইপ পড়ে (যেমন
int,float,boolean, ইত্যাদি)। - DataOutputStream: এটি একটি ক্লাস যা প্রিমিটিভ ডেটা টাইপ লেখে (যেমন
int,float,boolean, ইত্যাদি)।
এগুলি byte streams যা বাইনারি ডেটা পড়তে এবং লিখতে ব্যবহৃত হয়, এবং এটি stream-based ডেটা প্রক্রিয়াকরণের জন্য উপযুক্ত।
DataInputStream এবং DataOutputStream এর মেথড:
- DataOutputStream:
writeInt(int v): একটিintডেটা লেখে।writeFloat(float v): একটিfloatডেটা লেখে।writeBoolean(boolean v): একটিbooleanডেটা লেখে।writeUTF(String str): একটিUTFস্ট্রিং লেখে।
- DataInputStream:
readInt(): একটিintডেটা পড়ে।readFloat(): একটিfloatডেটা পড়ে।readBoolean(): একটিbooleanডেটা পড়ে।readUTF(): একটিUTFস্ট্রিং পড়ে।
Primitives Data Type পড়া এবং লেখা উদাহরণ
১. DataOutputStream দিয়ে প্রিমিটিভ ডেটা লেখা
এই উদাহরণে DataOutputStream ব্যবহার করে বিভিন্ন প্রিমিটিভ ডেটা (যেমন int, float, boolean) ফাইলে লেখা হচ্ছে।
import java.io.*;
public class DataOutputStreamExample {
public static void main(String[] args) {
// FileOutputStream এর মাধ্যমে DataOutputStream তৈরি করা হচ্ছে
try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("output.dat"))) {
int intValue = 42;
float floatValue = 3.14f;
boolean boolValue = true;
String stringValue = "Hello, World!";
// Primitives লেখার জন্য DataOutputStream ব্যবহার করা হচ্ছে
dos.writeInt(intValue); // Integer লেখার জন্য
dos.writeFloat(floatValue); // Float লেখার জন্য
dos.writeBoolean(boolValue); // Boolean লেখার জন্য
dos.writeUTF(stringValue); // String লেখার জন্য
System.out.println("Primitives written to file.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
writeInt(),writeFloat(),writeBoolean(), এবংwriteUTF()মেথডগুলি প্রিমিটিভ ডেটা টাইপ ফাইলে লেখার জন্য ব্যবহৃত হচ্ছে।- এই ডেটাগুলি output.dat নামক ফাইলে লেখা হচ্ছে।
আউটপুট:
Primitives written to file.
২. DataInputStream দিয়ে প্রিমিটিভ ডেটা পড়া
এখন, DataInputStream ব্যবহার করে output.dat ফাইল থেকে আগের মতো int, float, boolean, এবং String ডেটা পড়া হচ্ছে।
import java.io.*;
public class DataInputStreamExample {
public static void main(String[] args) {
// FileInputStream এর মাধ্যমে DataInputStream তৈরি করা হচ্ছে
try (DataInputStream dis = new DataInputStream(new FileInputStream("output.dat"))) {
// Primitives পড়ার জন্য DataInputStream ব্যবহার করা হচ্ছে
int intValue = dis.readInt(); // Integer পড়া
float floatValue = dis.readFloat(); // Float পড়া
boolean boolValue = dis.readBoolean(); // Boolean পড়া
String stringValue = dis.readUTF(); // String পড়া
// পড়া ডেটা প্রদর্শন করা হচ্ছে
System.out.println("Integer: " + intValue);
System.out.println("Float: " + floatValue);
System.out.println("Boolean: " + boolValue);
System.out.println("String: " + stringValue);
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
readInt(),readFloat(),readBoolean(), এবংreadUTF()মেথডগুলি ফাইল থেকে প্রিমিটিভ ডেটা টাইপ পড়ার জন্য ব্যবহৃত হচ্ছে।- এই উদাহরণে, output.dat ফাইল থেকে int, float, boolean, এবং String পড়া হচ্ছে।
আউটপুট (যদি output.dat ফাইলে পূর্বে লেখা ডেটা থাকে):
Integer: 42
Float: 3.14
Boolean: true
String: Hello, World!
DataOutputStream এবং DataInputStream এর সুবিধা এবং সীমাবদ্ধতা
সুবিধা:
- প্রিমিটিভ ডেটা টাইপের দ্রুত পড়া এবং লেখা:
- DataOutputStream এবং DataInputStream প্রিমিটিভ ডেটা টাইপের দ্রুত পড়া এবং লেখার জন্য খুবই কার্যকরী।
- Binary Format:
- এই ক্লাসগুলি বাইনারি ফরম্যাটে ডেটা পরিচালনা করে, ফলে আপনি বড় ডেটা দ্রুত এবং কার্যকরভাবে লিখতে এবং পড়তে পারবেন।
- Ease of Use:
- প্রিমিটিভ ডেটা টাইপগুলি DataOutputStream এবং DataInputStream এর মাধ্যমে সহজে এবং সরাসরি পড়া এবং লেখা যায়।
সীমাবদ্ধতা:
- ফাইল সাইজ:
- যদি ডেটা খুব বড় হয়, তবে DataOutputStream এবং DataInputStream বাইনারি ফরম্যাটে ফাইল সাইজ বাড়াতে পারে। এটি কম্প্রেসড ফরম্যাটে ডেটা সংরক্ষণের জন্য উপযুক্ত নয়।
- Unicode/Character Encoding:
- যদি টেক্সট ডেটা UTF-8 বা UTF-16 ফরম্যাটে এনকোড করা থাকে, তবে DataOutputStream এবং DataInputStream সঠিকভাবে এসব সাপোর্ট নাও করতে পারে, তবে
writeUTF()এবংreadUTF()মেথডগুলি সঠিক Unicode ফরম্যাটের জন্য সমর্থন প্রদান করে।
- যদি টেক্সট ডেটা UTF-8 বা UTF-16 ফরম্যাটে এনকোড করা থাকে, তবে DataOutputStream এবং DataInputStream সঠিকভাবে এসব সাপোর্ট নাও করতে পারে, তবে
- DataOutputStream এবং DataInputStream Java-তে প্রিমিটিভ ডেটা টাইপ (যেমন int, float, boolean) পড়া এবং লেখা করার জন্য ব্যবহৃত হয়।
- DataOutputStream ডেটা লেখার জন্য এবং DataInputStream ডেটা পড়ার জন্য একটি দ্রুত এবং কার্যকর উপায় প্রদান করে।
- এই দুটি ক্লাস বাইনারি ডেটা পড়া এবং লেখার জন্য খুবই কার্যকরী, বিশেষ করে যখন আপনি large datasets বা structured binary formats ম্যানিপুলেট করতে চান।
- DataOutputStream এবং DataInputStream এর সুবিধা হল এটি দ্রুত ডেটা স্থানান্তর করতে সাহায্য করে, তবে কিছু সীমাবদ্ধতা যেমন file size বা character encoding সমস্যা থাকতে পারে।
DataInputStream এবং DataOutputStream ক্লাসগুলি Java I/O প্যাকেজের গুরুত্বপূর্ণ অংশ যা প্রিমিটিভ ডেটা টাইপ (যেমন int, float, boolean, ইত্যাদি) বাইনারি ফরম্যাটে স্ট্রিমের মাধ্যমে পড়তে এবং লেখার জন্য ব্যবহৃত হয়। এই ক্লাসগুলি binary I/O অপারেশনগুলির জন্য উপযুক্ত, যা ফাইল বা নেটওয়ার্কের মাধ্যমে সরাসরি প্রিমিটিভ ডেটা স্ট্রিম করতে সহায়ক।
DataInputStream এবং DataOutputStream এর ভূমিকা:
- DataInputStream:
- এটি InputStream এর একটি সাবক্লাস যা বাইনারি ফরম্যাটে প্রিমিটিভ ডেটা টাইপ পড়ার জন্য ব্যবহৃত হয়।
- এটি একে একে
int,float,double,booleanসহ অন্যান্য প্রিমিটিভ ডেটা টাইপ পড়তে সক্ষম।
- DataOutputStream:
- এটি OutputStream এর একটি সাবক্লাস যা বাইনারি ফরম্যাটে প্রিমিটিভ ডেটা টাইপ লেখার জন্য ব্যবহৃত হয়।
- এটি
int,float,double,booleanসহ অন্যান্য প্রিমিটিভ ডেটা টাইপ স্ট্রিমে লিখতে সক্ষম।
DataInputStream এর মেথড:
readInt(): একটি int মান পড়ে।readFloat(): একটি float মান পড়ে।readBoolean(): একটি boolean মান পড়ে।readUTF(): একটি UTF String পড়ে।
DataOutputStream এর মেথড:
writeInt(int v): একটি int মান লেখে।writeFloat(float v): একটি float মান লেখে।writeBoolean(boolean v): একটি boolean মান লেখে।writeUTF(String str): একটি UTF String লেখে।
DataInputStream এবং DataOutputStream উদাহরণ
১. DataOutputStream দিয়ে ডেটা লেখা এবং DataInputStream দিয়ে ডেটা পড়া
এটি একটি সাধারণ উদাহরণ যেখানে DataOutputStream ব্যবহার করে ফাইলে ডেটা লেখা হবে এবং পরবর্তীতে DataInputStream দিয়ে সেই ডেটা পড়া হবে।
import java.io.*;
public class DataStreamExample {
public static void main(String[] args) {
// ডেটা লেখার জন্য DataOutputStream ব্যবহার
try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.dat"))) {
// বিভিন্ন প্রিমিটিভ ডেটা টাইপ লেখা
dos.writeInt(123); // int
dos.writeFloat(3.14f); // float
dos.writeBoolean(true); // boolean
dos.writeUTF("Hello, Java!"); // String (UTF format)
System.out.println("Data written to data.dat successfully.");
} catch (IOException e) {
e.printStackTrace();
}
// ডেটা পড়ার জন্য DataInputStream ব্যবহার
try (DataInputStream dis = new DataInputStream(new FileInputStream("data.dat"))) {
// DataInputStream থেকে ডেটা পড়া
int intValue = dis.readInt(); // int
float floatValue = dis.readFloat(); // float
boolean booleanValue = dis.readBoolean(); // boolean
String stringValue = dis.readUTF(); // String (UTF format)
// পড়া ডেটা প্রিন্ট করা
System.out.println("Read values from file:");
System.out.println("int: " + intValue);
System.out.println("float: " + floatValue);
System.out.println("boolean: " + booleanValue);
System.out.println("String: " + stringValue);
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- প্রথমে DataOutputStream ব্যবহার করে ফাইলে ডেটা লেখা হচ্ছে, যেমন
int,float,boolean, এবংString। - পরে DataInputStream ব্যবহার করে সেই ফাইল থেকে ডেটা পড়া হচ্ছে এবং সেগুলি কনসোলে প্রিন্ট করা হচ্ছে।
আউটপুট:
Data written to data.dat successfully.
Read values from file:
int: 123
float: 3.14
boolean: true
String: Hello, Java!
2. DataInputStream এবং DataOutputStream দিয়ে অবজেক্ট ডেটা লেখা এবং পড়া
এখানে আমরা DataOutputStream এবং DataInputStream ব্যবহার করে একটি serializable object ফাইলে লেখা এবং পড়ার উদাহরণ দেখাব।
import java.io.*;
class Person implements Serializable {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class ObjectDataStreamExample {
public static void main(String[] args) {
// ডেটা লেখার জন্য DataOutputStream ব্যবহার
try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("person.dat"))) {
Person person = new Person("John", 30);
dos.writeUTF(person.name); // String লেখার জন্য writeUTF
dos.writeInt(person.age); // int লেখার জন্য writeInt
System.out.println("Person object written to file.");
} catch (IOException e) {
e.printStackTrace();
}
// ডেটা পড়ার জন্য DataInputStream ব্যবহার
try (DataInputStream dis = new DataInputStream(new FileInputStream("person.dat"))) {
String name = dis.readUTF(); // String পড়ার জন্য readUTF
int age = dis.readInt(); // int পড়ার জন্য readInt
Person person = new Person(name, age);
System.out.println("Person object read from file:");
System.out.println("Name: " + person.name);
System.out.println("Age: " + person.age);
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- এখানে Person নামক একটি ক্লাস ব্যবহার করা হয়েছে যার দুটি ফিল্ড (নাম এবং বয়স) রয়েছে।
- DataOutputStream ব্যবহার করে person.dat ফাইলে অবজেক্টের প্রপার্টি লেখা হচ্ছে।
- পরে DataInputStream ব্যবহার করে সেই ডেটা পড়ে Person অবজেক্ট পুনরুদ্ধার করা হচ্ছে।
আউটপুট:
Person object written to file.
Person object read from file:
Name: John
Age: 30
DataInputStream এবং DataOutputStream এর সুবিধা
- প্রিমিটিভ ডেটা টাইপের জন্য সুবিধাজনক: DataInputStream এবং DataOutputStream প্রিমিটিভ ডেটা টাইপ যেমন
int,float,booleanইত্যাদি এক্সচেঞ্জ করার জন্য খুবই কার্যকরী। - ফাইল ফরম্যাটের সঙ্গে সামঞ্জস্যপূর্ণ: তারা ফাইল থেকে বাইনারি ডেটা পড়তে এবং লিখতে সহায়ক, যা serialization এর জন্য উপযুক্ত।
- ফাইল পারফরম্যান্স বৃদ্ধি: এই ক্লাসগুলি byte stream এর চেয়ে বেশি দ্রুত এবং দক্ষভাবে প্রিমিটিভ ডেটা লিখতে ও পড়তে সক্ষম।
- DataInputStream এবং DataOutputStream ক্লাসগুলি binary data পড়া এবং লেখার জন্য অত্যন্ত উপকারী, বিশেষত যখন আপনি primitives (যেমন
int,float,boolean) এবং UTF strings দিয়ে কাজ করছেন। - এই ক্লাসগুলি সহজেই binary files তৈরি এবং পড়তে সাহায্য করে, এবং এগুলি Java I/O সিস্টেমের গুরুত্বপূর্ণ অংশ হিসেবে কাজ করে।
DataInputStream এবং DataOutputStream এর মাধ্যমে ডেটা স্ট্রিমে লেখার সময় Endianess বা character encoding সঠিকভাবে পরিচালনা করা গুরুত্বপূর্ণ, যাতে ডেটা অপসারণ বা পুনরুদ্ধারের সময় কোনো ত্রুটি না ঘটে।
Read more