Java-তে প্রিমিটিভ ডেটা টাইপ (যেমন int, float, boolean, ইত্যাদি) পড়া এবং লেখা একটি গুরুত্বপূর্ণ কাজ, বিশেষ করে যখন আপনি বাইনারি বা টেক্সট ফাইলের সাথে কাজ করছেন। Java Tuples ব্যবহার করে এই প্রিমিটিভ ডেটা টাইপগুলিকে Java I/O স্ট্রিম এর মাধ্যমে পড়া এবং লেখা সহজে করা যায়।
Java FileInputStream এবং FileOutputStream ব্যবহার করে আমরা বাইনারি ফাইল থেকে প্রিমিটিভ ডেটা পড়তে এবং লিখতে পারি। তবে, DataInputStream এবং DataOutputStream ক্লাসগুলি প্রিমিটিভ ডেটা টাইপের পড়া এবং লেখা আরও সহজ এবং কার্যকর করতে ব্যবহৃত হয়।
DataInputStream এবং DataOutputStream ক্লাস
DataInputStreamএবংDataOutputStreamক্লাস ব্যবহার করে আপনি প্রিমিটিভ ডেটা টাইপ (যেমনint,float,boolean,double, ইত্যাদি) পড়তে এবং লেখতে পারেন।- এই ক্লাসগুলো binary data স্টোরেজ এবং cross-platform কার্যকারিতা নিশ্চিত করতে সাহায্য করে।
DataOutputStream (প্রিমিটিভ ডেটা লেখার জন্য)
writeInt(int v): একটিintলিখে।writeFloat(float v): একটিfloatলিখে।writeBoolean(boolean v): একটিbooleanলিখে।writeDouble(double v): একটিdoubleলিখে।
DataInputStream (প্রিমিটিভ ডেটা পড়ার জন্য)
readInt(): একটিintপড়ে।readFloat(): একটিfloatপড়ে।readBoolean(): একটিbooleanপড়ে।readDouble(): একটিdoubleপড়ে।
প্রিমিটিভ ডেটা টাইপ পড়া এবং লেখা: উদাহরণ
১. প্রিমিটিভ ডেটা লেখার উদাহরণ (DataOutputStream)
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class PrimitiveDataWriteExample {
public static void main(String[] args) {
try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.dat"))) {
// প্রিমিটিভ ডেটা টাইপ লেখা
dos.writeInt(123); // লিখলাম একটি int
dos.writeFloat(3.14f); // লিখলাম একটি float
dos.writeBoolean(true); // লিখলাম একটি boolean
dos.writeDouble(3.14159); // লিখলাম একটি double
System.out.println("Primitive data written successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
এই কোডে:
writeInt()দিয়ে একটিintফাইলের মধ্যে লেখা হয়।writeFloat()দিয়ে একটিfloatলেখা হয়।writeBoolean()দিয়ে একটিbooleanলেখা হয়।writeDouble()দিয়ে একটিdoubleলেখা হয়।
২. প্রিমিটিভ ডেটা পড়ার উদাহরণ (DataInputStream)
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class PrimitiveDataReadExample {
public static void main(String[] args) {
try (DataInputStream dis = new DataInputStream(new FileInputStream("data.dat"))) {
// প্রিমিটিভ ডেটা টাইপ পড়া
int i = dis.readInt(); // পড়লাম একটি int
float f = dis.readFloat(); // পড়লাম একটি float
boolean b = dis.readBoolean(); // পড়লাম একটি boolean
double d = dis.readDouble(); // পড়লাম একটি double
System.out.println("Read Data:");
System.out.println("int: " + i);
System.out.println("float: " + f);
System.out.println("boolean: " + b);
System.out.println("double: " + d);
} catch (IOException e) {
e.printStackTrace();
}
}
}
এই কোডে:
readInt()দিয়ে একটিintপড়া হয়।readFloat()দিয়ে একটিfloatপড়া হয়।readBoolean()দিয়ে একটিbooleanপড়া হয়।readDouble()দিয়ে একটিdoubleপড়া হয়।
Java Tuples ব্যবহার করে প্রিমিটিভ ডেটা স্টোর করা
Java Tuples ব্যবহার করে ফাইলের প্রিমিটিভ ডেটা একত্রে সংরক্ষণ করা যেতে পারে, যেমন ফাইলের নাম, আকার, এবং ডেটা।
উদাহরণ: Tuple ব্যবহার করে ফাইলের ডেটা ও আকার সংরক্ষণ
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.lang3.tuple.Pair;
public class TuplePrimitiveDataExample {
public static void main(String[] args) {
// ফাইলের প্রিমিটিভ ডেটা লেখার জন্য
writePrimitiveData("data.dat");
// ফাইল থেকে প্রিমিটিভ ডেটা পড়া এবং Tuple এ সংরক্ষণ
Pair<String, Integer> fileData = readPrimitiveData("data.dat");
System.out.println("File Name: " + fileData.getLeft());
System.out.println("File Size: " + fileData.getRight() + " bytes");
}
public static void writePrimitiveData(String filename) {
try (DataOutputStream dos = new DataOutputStream(new FileOutputStream(filename))) {
dos.writeInt(123); // লিখলাম একটি int
dos.writeFloat(3.14f); // লিখলাম একটি float
dos.writeBoolean(true); // লিখলাম একটি boolean
dos.writeDouble(3.14159); // লিখলাম একটি double
System.out.println("Primitive data written to " + filename);
} catch (IOException e) {
e.printStackTrace();
}
}
public static Pair<String, Integer> readPrimitiveData(String filename) {
int fileSize = 0;
try (DataInputStream dis = new DataInputStream(new FileInputStream(filename))) {
int i = dis.readInt(); // পড়লাম একটি int
float f = dis.readFloat(); // পড়লাম একটি float
boolean b = dis.readBoolean(); // পড়লাম একটি boolean
double d = dis.readDouble(); // পড়লাম একটি double
// ফাইলের সাইজ নির্ধারণ
fileSize = (int) new java.io.File(filename).length();
System.out.println("Read Data:");
System.out.println("int: " + i);
System.out.println("float: " + f);
System.out.println("boolean: " + b);
System.out.println("double: " + d);
} catch (IOException e) {
e.printStackTrace();
}
return Pair.of(filename, fileSize);
}
}
এই উদাহরণে:
- Tuple এর মাধ্যমে ফাইলের নাম এবং সাইজ সংরক্ষণ করা হয় এবং পরবর্তীতে readPrimitiveData() মেথডে ফিরে আসে।
DataOutputStreamব্যবহার করে প্রিমিটিভ ডেটা ফাইলে লেখা হয়।DataInputStreamব্যবহার করে প্রিমিটিভ ডেটা ফাইল থেকে পড়া হয়।
FileReader / FileWriter vs DataInputStream / DataOutputStream
| বিষয় | FileReader/FileWriter | DataInputStream/DataOutputStream |
|---|---|---|
| ডেটা টাইপ | টেক্সট ডেটা (Character streams) | প্রিমিটিভ ডেটা (Binary data) |
| ব্যবহার | টেক্সট ফাইলের জন্য উপযুক্ত | বাইনারি ডেটা এবং প্রিমিটিভ ডেটা টাইপের জন্য |
| উপযুক্ত ক্ষেত্র | টেক্সট ফাইল (যেমন .txt, .csv) | প্রিমিটিভ ডেটা যেমন int, float, boolean, .dat ফাইল |
| স্ট্রিম টাইপ | Character Stream (16-বিট ক্যারেক্টার) | Byte Stream (8-বিট বাইনারি) |
- DataInputStream এবং DataOutputStream প্রিমিটিভ ডেটা টাইপ (যেমন
int,float,boolean,double) পড়া এবং লেখা করার জন্য একটি শক্তিশালী টুল। - Java Tuples ব্যবহার করে আমরা ফাইলের নাম, আকার, এবং অন্যান্য প্রোপার্টি একত্রে সংরক্ষণ করতে পারি।
- FileReader এবং FileWriter শুধুমাত্র টেক্সট ডেটা নিয়ে কাজ করে, কিন্তু DataInputStream এবং DataOutputStream প্রিমিটিভ ডেটা টাইপের জন্য আরও উপযুক্ত।
Read more