PrintWriter হলো একটি ক্লাস যা Java-তে টেক্সট এবং অবজেক্ট ডেটা লেখার জন্য ব্যবহৃত হয়। এটি Character Streams এর অংশ এবং টেক্সট ডেটা লেখার জন্য ব্যবহার করা হয়, যেখানে FileWriter এবং BufferedWriter এর মতো ক্লাসগুলোও ব্যবহৃত হতে পারে।
PrintWriter-এর সাহায্যে আপনি text (পাঠ্য) ডেটা এবং objects (অবজেক্ট) সহজে একটি ফাইলে বা স্ট্রিমে লিখতে পারেন।
এই উদাহরণে, আমরা দেখব কিভাবে Java Tuples ব্যবহার করে text এবং object data ফাইলে লেখার জন্য PrintWriter ব্যবহার করা যায়।
PrintWriter এর বৈশিষ্ট্য
- Automatic Flushing: যখন আপনি
println()বাprintf()মেথড ব্যবহার করেন, তখন এটি অটোমেটিকভাবে ফ্লাশ হয়ে যায়। - Character-based Output:
PrintWriterচরিত্র ভিত্তিক আউটপুট স্ট্রিম হিসাবে কাজ করে এবং বাইনারি ডেটা (Byte-based data) লেখার জন্য উপযুক্ত নয়। - Convenient Methods: এটি সাধারণত
write(),println(),printf()এবং অন্যান্য মেথডের মাধ্যমে টেক্সট ডেটা লেখার জন্য ব্যবহৃত হয়।
Text Data Write Using PrintWriter
Step 1: Text Data লিখতে PrintWriter ব্যবহার
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
public class TextFileExample {
public static void main(String[] args) {
File file = new File("output.txt");
try (PrintWriter writer = new PrintWriter(file)) {
// Writing text data to the file
writer.println("Hello, World!");
writer.println("Java Tuples with PrintWriter example.");
writer.printf("This is a formatted message: %d, %s\n", 100, "Java");
System.out.println("Text written to file successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output in the file (output.txt):
Hello, World!
Java Tuples with PrintWriter example.
This is a formatted message: 100, Java
Explanation:
println(): এটি একটি নতুন লাইন দিয়ে ডেটা লেখে।printf(): এটি একটি ফরম্যাটেড আউটপুট লেখে।
Object Data Write Using PrintWriter
Step 2: Object Data (Tuple) লিখতে PrintWriter ব্যবহার
যেহেতু PrintWriter টেক্সট ডেটা লেখার জন্য ব্যবহৃত হয়, আমরা Tuples অবজেক্টগুলোকে String-এ কনভার্ট করে ফাইলে লেখার জন্য PrintWriter ব্যবহার করতে পারি।
import io.vavr.Tuple;
import io.vavr.Tuple2;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
public class ObjectDataExample {
public static void main(String[] args) {
// Create a Tuple object
Tuple2<String, Integer> person = Tuple.of("Alice", 30);
File file = new File("tuple_output.txt");
try (PrintWriter writer = new PrintWriter(file)) {
// Writing Tuple data to the file as text
writer.println("Name: " + person._1);
writer.println("Age: " + person._2);
System.out.println("Object data (Tuple) written to file successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output in the file (tuple_output.txt):
Name: Alice
Age: 30
Explanation:
Tuple2<String, Integer>: আমরা একটিTuple2অবজেক্ট তৈরি করেছি, যেখানে প্রথম ভ্যালু হলো নাম এবং দ্বিতীয় ভ্যালু হলো বয়স।println(): Tuple অবজেক্টের সদস্যদেরকে String হিসেবে ফাইলের মধ্যে লেখার জন্য ব্যবহার করা হয়েছে।
Text এবং Object Data Write with Tuple Using PrintWriter
PrintWriter ব্যবহার করে Tuples এর text এবং object data একই ফাইলে লেখা সম্ভব। এখানে, Tuple এর সকল ভ্যালু একসাথে একটি ফাইলে লেখার উদাহরণ দেখানো হয়েছে।
import io.vavr.Tuple;
import io.vavr.Tuple3;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
public class TupleAndTextExample {
public static void main(String[] args) {
// Create a Tuple with 3 values
Tuple3<String, Integer, String> person = Tuple.of("Alice", 30, "Engineer");
File file = new File("tuple_and_text_output.txt");
try (PrintWriter writer = new PrintWriter(file)) {
// Writing text and Tuple data to the file
writer.println("Person Information:");
writer.println("Name: " + person._1);
writer.println("Age: " + person._2);
writer.println("Profession: " + person._3);
System.out.println("Text and Tuple data written to file successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output in the file (tuple_and_text_output.txt):
Person Information:
Name: Alice
Age: 30
Profession: Engineer
Explanation:
- Tuple3<String, Integer, String>: এটি একটি টুপল অবজেক্ট যা তিনটি ভ্যালু ধারণ করে (নাম, বয়স এবং পেশা)।
- PrintWriter: এটি টেক্সট এবং অবজেক্ট ডেটা ফাইলের মধ্যে লেখা হয়েছে।
PrintWriter এর সুবিধা এবং সীমাবদ্ধতা
সুবিধা:
- সামাজিক ইন্টারফেস:
PrintWriterব্যবহার করে টেক্সট ডেটা লেখার জন্য একটি সহজ এবং কার্যকর ইন্টারফেস পাওয়া যায়। - ফরম্যাটেড আউটপুট:
printf()এবংformat()মেথড ব্যবহার করে ফরম্যাটেড আউটপুট প্রদান করা সম্ভব। - Automated Flushing:
println()এবংprintf()স্বয়ংক্রিয়ভাবে ফ্লাশ করে, তাই অতিরিক্ত ফ্লাশ কলের প্রয়োজন হয় না।
সীমাবদ্ধতা:
- Binary Data:
PrintWriterশুধুমাত্র টেক্সট ডেটা লেখার জন্য উপযুক্ত, বাইনারি ডেটার জন্য ব্যবহার করা যায় না। - Object Serialization: অবজেক্ট ডেটা লেখার জন্য
ObjectOutputStreamব্যবহার করা উচিত, PrintWriter অবজেক্ট সিরিয়ালাইজেশন সমর্থন করে না।
PrintWriter Java-তে text এবং object data ফাইলের মধ্যে লেখার জন্য ব্যবহৃত হয়। Tuples ব্যবহার করে ডেটার একাধিক অংশকে PrintWriter এর মাধ্যমে একত্রে ফাইলে লেখা যায়। এটি কোডকে রিডেবল এবং কার্যকর করে তোলে।
Best Practice: PrintWriter ব্যবহার করুন যখন আপনি text-based data ফাইলের মধ্যে লেখবেন, এবং ObjectOutputStream ব্যবহার করুন যখন আপনি object data সিরিয়ালাইজ করবেন।
Read more