PrintStream এবং PrintWriter

জাভা আইও (Java.io Package) - Java Technologies

324

PrintStream এবং PrintWriter হল Java I/O প্যাকেজের দুটি ক্লাস যা output স্ট্রিমে ডেটা প্রিন্ট করার জন্য ব্যবহৃত হয়। এগুলি text-based ডেটা বা primitive types (যেমন int, float, boolean, ইত্যাদি) প্রিন্ট করতে খুবই কার্যকরী।

PrintStream এবং PrintWriter এর ভূমিকা:

  1. PrintStream:
    • PrintStream একটি byte stream যা সাধারণত কনসোল বা ফাইলের মধ্যে আউটপুট প্রিন্ট করার জন্য ব্যবহৃত হয়।
    • এটি System.out স্ট্রিমের মাধ্যমে ডিফল্ট আউটপুট প্রিন্ট করে, এবং বাইনারি ডেটা পাশাপাশি primitive data types এবং strings সহ প্রিন্ট করতে সক্ষম।
    • PrintStream ফাইল বা কনসোলের জন্য সহজে আউটপুট প্রিন্ট করতে সহায়ক এবং এর মধ্যে print(), println(), এবং printf() মেথড রয়েছে।
  2. PrintWriter:
    • PrintWriter একটি character stream যা text-based output প্রিন্ট করতে ব্যবহৃত হয়। এটি বাইনারি ডেটার পরিবর্তে Unicode বা টেক্সট ডেটা পরিচালনা করতে সহায়ক।
    • এটি file-based বা console-based আউটপুট প্রিন্টিংয়ের জন্য কার্যকরী, এবং এর মধ্যে print(), println(), এবং printf() মেথড রয়েছে, যা formatted output প্রিন্ট করতে সহায়ক।

প্রধান মেথড:

PrintStream:

  • print(): একটি আর্গুমেন্ট প্রিন্ট করে, কিন্তু নতুন লাইন যোগ করে না।
  • println(): একটি আর্গুমেন্ট প্রিন্ট করে এবং একটি নতুন লাইন যোগ করে।
  • printf(): ফরম্যাটেড আউটপুট প্রিন্ট করার জন্য ব্যবহৃত হয়।

PrintWriter:

  • print(): একটি আর্গুমেন্ট প্রিন্ট করে, কিন্তু নতুন লাইন যোগ করে না।
  • println(): একটি আর্গুমেন্ট প্রিন্ট করে এবং একটি নতুন লাইন যোগ করে।
  • printf(): ফরম্যাটেড আউটপুট প্রিন্ট করার জন্য ব্যবহৃত হয়।

PrintStream এবং PrintWriter এর উদাহরণ

1. PrintStream ব্যবহার করে কনসোলে আউটপুট প্রিন্ট

import java.io.*;

public class PrintStreamExample {
    public static void main(String[] args) {
        // System.out এর মাধ্যমে PrintStream ব্যবহার করে আউটপুট প্রিন্ট
        PrintStream ps = System.out;

        // Primitive data types এবং Strings প্রিন্ট
        ps.println("Hello, World!");
        ps.print("This is ");
        ps.print("a simple example.");
        ps.println();
        ps.printf("The value of pi is approximately: %.2f", 3.14159);
    }
}

ব্যাখ্যা:

  • PrintStream ব্যবহারের মাধ্যমে System.out এর মাধ্যমে কনসোলে আউটপুট প্রিন্ট করা হচ্ছে।
  • println(), print(), এবং printf() মেথডগুলি বিভিন্ন ধরনের আউটপুট প্রদর্শন করতে ব্যবহৃত হয়েছে।

আউটপুট:

Hello, World!
This is a simple example.
The value of pi is approximately: 3.14

2. PrintWriter ব্যবহার করে ফাইলে আউটপুট প্রিন্ট

import java.io.*;

public class PrintWriterExample {
    public static void main(String[] args) {
        // PrintWriter ব্যবহার করে ফাইল লেখার উদাহরণ
        try (PrintWriter writer = new PrintWriter(new File("output.txt"))) {
            writer.println("Hello, World!");
            writer.print("This is ");
            writer.println("a file output example.");
            writer.printf("The value of pi is %.2f", 3.14159);
        } catch (FileNotFoundException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • PrintWriter ব্যবহার করে output.txt ফাইলে String, primitive data types এবং formatted output লেখা হচ্ছে।
  • println(), print(), এবং printf() মেথডের মাধ্যমে ফাইলের মধ্যে আউটপুট লিখে।

ফাইলের মধ্যে আউটপুট (output.txt):

Hello, World!
This is a file output example.
The value of pi is 3.14

3. PrintStream এবং PrintWriter এর মধ্যে পার্থক্য

বিষয়PrintStreamPrintWriter
Stream TypeByte stream (বাইনারি ডেটা)Character stream (টেক্সট ডেটা)
Usageসাধারণত কনসোল বা বাইনারি ডেটা প্রিন্ট করতে ব্যবহৃতটেক্সট ডেটা প্রিন্ট করার জন্য ব্যবহৃত
Unicode SupportNo (Only byte based data)Yes (Supports Unicode text)
Methodsprint(), println(), printf()print(), println(), printf()
Typical Use CaseConsole output or binary data printingText file writing, console output, formatted text

FileWriter এবং PrintWriter এর তুলনা:

  • PrintWriter এবং FileWriter উভয়ই ফাইল লেখার জন্য ব্যবহৃত হয়, তবে PrintWriter বেশি সুবিধাজনক কারণ এটি formatted output এবং Unicode সমর্থন করে, যেখানে FileWriter শুধুমাত্র character streams ব্যবহৃত করে টেক্সট লেখে।
  • PrintWriter ক্লাসের একটি অতিরিক্ত সুবিধা হল, এটি auto-flush অপশন সমর্থন করে (যখন println() বা printf() কল করা হয়), যা ফাইল লেখার শেষে স্বয়ংক্রিয়ভাবে লেখাটি ফ্লাশ করে।

  • PrintStream এবং PrintWriter ক্লাসগুলি Java I/O প্যাকেজে output streams তৈরি করতে ব্যবহৃত হয়।
  • PrintStream সাধারণত কনসোলের জন্য এবং বাইনারি ডেটা প্রিন্ট করতে ব্যবহৃত হয়, যখন PrintWriter টেক্সট ডেটা লেখার জন্য উপযুক্ত এবং এটি formatted output সমর্থন করে।
  • PrintWriter সাধারণত FileWriter বা FileOutputStream এর তুলনায় বেশি সুবিধাজনক, কারণ এটি Unicode সমর্থন করে এবং formatted output-এ সহায়ক।
Content added By

PrintStream এবং PrintWriter Java I/O প্যাকেজের দুটি গুরুত্বপূর্ণ ক্লাস, যা output ডেটা প্রিন্ট করতে ব্যবহৃত হয়। এই ক্লাসগুলো character-based এবং byte-based আউটপুট স্ট্রিমের মধ্যে সুবিধাজনক উপায় প্রদান করে, যেখানে আপনি সহজেই ডেটা ফর্ম্যাটিং সহ প্রিন্ট করতে পারেন।


PrintStream ক্লাস:

PrintStream ক্লাসটি OutputStream এর একটি সাবক্লাস যা টেক্সট এবং বাইনারি ডেটা আউটপুটের জন্য ব্যবহৃত হয়। এটি System.out এর মাধ্যমে স্ট্যান্ডার্ড আউটপুট (কনসোলে) বা ফাইলে আউটপুট প্রিন্ট করতে সাহায্য করে। PrintStream সাধারণত print(), println(), এবং printf() মেথড সরবরাহ করে, যার মাধ্যমে ফরম্যাটেড আউটপুট প্রিন্ট করা যায়।

PrintStream এর বৈশিষ্ট্য:

  1. print() এবং println() মেথড:
    • print() মেথড সাধারণ আউটপুট প্রদান করে এবং লাইন ব্রেক দেয় না।
    • println() মেথড আউটপুট প্রদান করে এবং প্রতিটি আউটপুট শেষে লাইন ব্রেক দেয়।
  2. ফরম্যাটেড আউটপুট:
    • printf() মেথডের মাধ্যমে ফরম্যাটেড আউটপুট প্রদান করা যায়।
  3. ফাইল প্রিন্টিং:
    • PrintStream কনসোলে আউটপুট করার পাশাপাশি ফাইলও প্রিন্ট করতে সক্ষম।

PrintStream উদাহরণ:

import java.io.*;

public class PrintStreamExample {
    public static void main(String[] args) {
        try {
            // কনসোলে আউটপুট প্রিন্ট
            PrintStream ps = System.out;
            ps.println("Hello, this is a PrintStream example.");
            
            // ফাইলে আউটপুট প্রিন্ট
            PrintStream fileOut = new PrintStream("output.txt");
            fileOut.println("This is printed to the file.");
            fileOut.close();
            
            System.out.println("Data printed to output.txt successfully.");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • PrintStream ব্যবহার করে কনসোলে এবং ফাইলে আউটপুট করা হচ্ছে। প্রথমে কনসোলে প্রিন্ট করা হচ্ছে এবং পরে output.txt ফাইলে লিখা হচ্ছে।

আউটপুট:

Hello, this is a PrintStream example.
Data printed to output.txt successfully.

ফাইলের কন্টেন্ট (output.txt):

This is printed to the file.

PrintWriter ক্লাস:

PrintWriter ক্লাস Writer এর একটি সাবক্লাস এবং এটি টেক্সট (character) আউটপুট প্রিন্ট করার জন্য ব্যবহৃত হয়। এটি PrintStream এর মতোই প্রিন্ট মেথড সরবরাহ করে তবে এটি character-based স্ট্রিমে কাজ করে, যেখানে বাইট-ভিত্তিক স্ট্রিমের জন্য PrintStream ব্যবহার করা হয়।

PrintWriter এর বৈশিষ্ট্য:

  1. print() এবং println() মেথড:
    • print() এবং println() মেথড ব্যবহার করে টেক্সট প্রিন্ট করা যায়, যেখানে println() প্রতিটি আউটপুটের পরে একটি নতুন লাইন প্রদান করে।
  2. ফরম্যাটেড আউটপুট:
    • printf() মেথডের মাধ্যমে ফরম্যাটেড আউটপুট প্রদান করা যায়।
  3. Flush এবং AutoFlush:
    • flush() মেথড স্ট্রীমের সমস্ত জমা ডেটা আউটপুট স্ট্রীমে পাঠিয়ে দেয়।
    • AutoFlush সক্ষম করা হলে, println() মেথড প্রত্যেক বার কল হলে স্বয়ংক্রিয়ভাবে ফ্লাশ হবে।

PrintWriter উদাহরণ:

import java.io.*;

public class PrintWriterExample {
    public static void main(String[] args) {
        try {
            // কনসোলে আউটপুট প্রিন্ট
            PrintWriter pw = new PrintWriter(System.out);
            pw.println("Hello, this is a PrintWriter example.");
            
            // ফাইলে আউটপুট প্রিন্ট
            PrintWriter fileOut = new PrintWriter(new FileWriter("output.txt"));
            fileOut.println("This is printed to the file.");
            fileOut.flush(); // ফাইলের সমস্ত ডেটা ফ্লাশ করা হচ্ছে
            fileOut.close();
            
            System.out.println("Data printed to output.txt successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • PrintWriter ব্যবহার করে কনসোলে এবং output.txt ফাইলে আউটপুট করা হচ্ছে।
  • flush() মেথড ফাইলের সমস্ত জমে থাকা ডেটা ফ্লাশ করে পাঠানোর কাজ করে।

আউটপুট:

Hello, this is a PrintWriter example.
Data printed to output.txt successfully.

ফাইলের কন্টেন্ট (output.txt):

This is printed to the file.

PrintStream এবং PrintWriter এর মধ্যে পার্থক্য

বিষয়PrintStreamPrintWriter
Base ClassOutputStream (byte-based I/O)Writer (character-based I/O)
Byte vs Character StreamsByte-based স্ট্রিম ব্যবহৃতCharacter-based স্ট্রিম ব্যবহৃত
Null HandlingNull printing সংক্রান্ত ত্রুটি সঠিকভাবে হ্যান্ডল করে নাNull printing সঠিকভাবে হ্যান্ডল করে
AutoFlushAutoFlush বৈশিষ্ট্য নেইAutoFlush বৈশিষ্ট্য আছে, flush() মেথডের মাধ্যমে
Common UseMainly used for binary data, System outputMainly used for text output
FormattingLimited formatting capabilitiesSupports advanced formatting using printf()

সারসংক্ষেপ:

  • PrintStream এবং PrintWriter দুইটি Java I/O ক্লাস, যা ডেটা আউটপুট করার জন্য ব্যবহৃত হয়।
  • PrintStream মূলত byte-based I/O এর জন্য উপযুক্ত, যেখানে PrintWriter character-based I/O এর জন্য ব্যবহৃত হয়।
  • PrintWriter বেশি টেক্সট ফাইল বা স্ট্রিমে কাজ করার জন্য ব্যবহৃত হয় এবং autoFlush সুবিধা প্রদান করে।
  • PrintStream সাধারণত বাইনারি ডেটা বা সিস্টেম আউটপুট (যেমন কনসোল) জন্য ব্যবহৃত হয়।

PrintWriter হল টেক্সট ফাইল লেখার জন্য উন্নত এবং ফরম্যাটিং সুবিধা প্রদানকারী একটি ক্লাস, যেখানে PrintStream মূলত স্ট্যান্ডার্ড আউটপুট এবং বাইনারি ডেটার জন্য ব্যবহৃত হয়।

Content added By

PrintStream হল Java.io প্যাকেজের একটি ক্লাস, যা ডেটা আউটপুট করতে ব্যবহৃত হয় এবং এটি formatted output প্রদান করার জন্য বিশেষভাবে উপযোগী। PrintStream ক্লাসটি System.out এর মাধ্যমে কনসোল আউটপুট প্রদান করতে ব্যবহৃত হয়, এবং এটি বিশেষভাবে টেক্সট ডেটার ফরম্যাটেড আউটপুট (যেমন println(), print(), printf()) করার জন্য ব্যবহৃত হয়।

PrintStream একটি byte stream, তবে এটি formatted text আউটপুট করতে সক্ষম। এতে print(), println(), এবং printf() মেথডগুলো অন্তর্ভুক্ত রয়েছে, যা ফরম্যাট করা আউটপুট প্রিন্ট করতে সহায়ক।


PrintStream এর ভূমিকা এবং প্রয়োজনীয়তা:

  • Formatted Output: PrintStream ফরম্যাটেড আউটপুট করার জন্য printf() এবং format() মেথড প্রদান করে।
  • Convenience: এটি সহজেই টেক্সট এবং বাইনারি ডেটা আউটপুট করতে সহায়ক। এটি একটি স্ট্রিম যার মাধ্যমে ডেটা প্রিন্ট করা সহজ হয়।
  • System.out: PrintStream এর একটি উদাহরণ হল System.out, যা স্ট্যান্ডার্ড আউটপুট (কনসোল) এ ডেটা প্রিন্ট করে।
  • Automatic Flushing: PrintStream ক্লাসের সাথে flush() এবং close() মেথড অন্তর্ভুক্ত রয়েছে, যা আউটপুট স্ট্রিমে বাফারিং করে থাকা ডেটা পাঠাতে সাহায্য করে এবং স্ট্রিম বন্ধ করতে ব্যবহৃত হয়।

PrintStream এর মেথড:

মেথডবর্ণনা
print()ডেটা প্রিন্ট করে, কিন্তু একটি নতুন লাইন শুরু করে না।
println()ডেটা প্রিন্ট করে এবং একটি নতুন লাইন শুরু করে।
printf()ফরম্যাটেড আউটপুট প্রিন্ট করে (Java printf মত)।
format()printf() এর মতই ফরম্যাটেড আউটপুট প্রিন্ট করে।
flush()স্ট্রিমে বাফার করা ডেটা পাঠাতে ব্যবহৃত হয়।
close()স্ট্রিম বন্ধ করে।

PrintStream এর উদাহরণ:

১. সাধারণ PrintStream ব্যবহার

import java.io.*;

public class PrintStreamExample {
    public static void main(String[] args) {
        // PrintStream এর মাধ্যমে কনসোলে আউটপুট
        PrintStream ps = System.out;

        ps.println("Hello, World!");  // একটি নতুন লাইনসহ প্রিন্ট
        ps.print("This is a test.");  // নতুন লাইন ছাড়া প্রিন্ট
        ps.println(" And this is on the next line.");

        ps.printf("Formatted number: %.2f\n", 123.456); // ফরম্যাট করা আউটপুট
    }
}

ব্যাখ্যা:

  • println() মেথডটি আউটপুট প্রদানের পর নতুন লাইন শুরু করে।
  • print() মেথডটি আউটপুট প্রদানের পর নতুন লাইন শুরু করে না।
  • printf() মেথডটি ফরম্যাটেড আউটপুট প্রদানের জন্য ব্যবহৃত হয়। এখানে %.2f ব্যবহার করা হয়েছে একটি ভাসমান দশমিক সংখ্যাকে দুটি দশমিক স্থান পর্যন্ত ফরম্যাট করার জন্য।

আউটপুট:

Hello, World!
This is a test. And this is on the next line.
Formatted number: 123.46

২. PrintStream এর মাধ্যমে ফাইল আউটপুট

import java.io.*;

public class FileOutputExample {
    public static void main(String[] args) {
        try (PrintStream ps = new PrintStream(new FileOutputStream("output.txt"))) {
            ps.println("This is written to a file using PrintStream.");
            ps.printf("Formatted output: %.2f\n", 3.14159);
            System.out.println("Data written to output.txt");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • PrintStream ব্যবহার করে আমরা কনসোলে এবং ফাইলে আউটপুট প্রিন্ট করতে পারি।
  • এখানে FileOutputStream ব্যবহার করে একটি ফাইলের মধ্যে আউটপুট লেখা হচ্ছে।

আউটপুট (ফাইলের মধ্যে output.txt):

This is written to a file using PrintStream.
Formatted output: 3.14

কনসোল আউটপুট:

Data written to output.txt

৩. PrintStream এর Flush এবং Close ব্যবহার

import java.io.*;

public class PrintStreamFlushExample {
    public static void main(String[] args) {
        try (PrintStream ps = new PrintStream(new FileOutputStream("output.txt"))) {
            ps.print("This is a test without flushing.");
            ps.flush();  // বাফারড ডেটা পাঠাতে flush করা হলো।
            ps.println(" And this is after flush.");
            System.out.println("Data written and flushed to output.txt.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • flush() মেথডটি স্ট্রিমে বাফার করা সমস্ত ডেটা পাঠিয়ে দেয়।
  • close() মেথডটি স্ট্রিম বন্ধ করে।

আউটপুট (ফাইলের মধ্যে output.txt):

This is a test without flushing.And this is after flush.

কনসোল আউটপুট:

Data written and flushed to output.txt.

PrintStream এর সুবিধা এবং সীমাবদ্ধতা

সুবিধা:

  1. ফরম্যাটেড আউটপুট:
    • printf() এবং format() মেথডগুলির মাধ্যমে ফরম্যাটেড আউটপুট করা সহজ।
  2. সহজ এবং সুবিধাজনক:
    • print(), println() মেথডগুলির মাধ্যমে সাধারণ আউটপুট প্রিন্ট করা সহজ।
  3. স্ট্রিমের উপর আউটপুট প্রদান:
    • এটি System.out (স্ট্যান্ডার্ড আউটপুট), ফাইল বা অন্য স্ট্রিমে আউটপুট পাঠানোর জন্য ব্যবহার করা যেতে পারে।
  4. Flush এবং Close:
    • flush() এবং close() মেথডের মাধ্যমে আউটপুট স্ট্রিমের কার্যকারিতা উন্নত করা যায় এবং ডেটা স্ট্রিমে জমে থাকা ডেটা পাঠানো নিশ্চিত করা যায়।

সীমাবদ্ধতা:

  1. Byte Stream:
    • PrintStream একটি byte stream, কিন্তু Character stream এর জন্য PrintWriter আরও কার্যকরী হতে পারে। PrintWriter সঠিক character encoding সাপোর্ট করে।
  2. Performance:
    • খুব বড় ডেটার জন্য, বিশেষ করে formatted output এর ক্ষেত্রে PrintStream কিছুটা ধীর হতে পারে, এবং আরো উন্নত টুলস যেমন BufferedOutputStream ব্যবহৃত হতে পারে।

  • PrintStream একটি শক্তিশালী ক্লাস যা Javaformatted output তৈরি করার জন্য ব্যবহৃত হয়।
  • এটি ফরম্যাট করা আউটপুট যেমন printf(), print(), এবং println() মেথডের মাধ্যমে সরবরাহ করে।
  • PrintStream সাধারণ আউটপুটের জন্য এবং file output এর জন্য খুবই উপযোগী, তবে ফাইল বা কনসোলের জন্য character encoding সঠিকভাবে সমর্থন করার জন্য PrintWriter ব্যবহার করা উচিত।

PrintStream Java-তে আউটপুট পরিচালনা করার একটি সহজ এবং কার্যকর উপায়, যা প্রোগ্রামিংয়ে দক্ষতা বৃদ্ধি করে এবং ব্যবহারকারীদের সুবিধা প্রদান করে।

Content added By

PrintWriter হল Java.io প্যাকেজের একটি ক্লাস যা Text Data লেখার জন্য ব্যবহৃত হয়। এটি খুবই কার্যকরী এবং উচ্চ স্তরের Character Stream, যা টেক্সট ডেটা স্ট্রিমে বা ফাইলে লেখার জন্য ব্যবহৃত হয়। PrintWriter ক্লাসটি বিশেষভাবে formatted output লেখার জন্য উপযুক্ত, যেমন println(), printf(), এবং format() মেথড যা বিভিন্ন ধরনের ডেটা স্ট্রিমে লিখতে সাহায্য করে।

PrintWriter ক্লাস শুধুমাত্র Text Data লেখার জন্য ব্যবহৃত হয়, তবে এটি কিছু অবজেক্ট ডেটা (যেমন String, int, boolean, ইত্যাদি) লেখার জন্যও ব্যবহার করা যেতে পারে।

এটি OutputStreamWriter বা FileWriter এর উপরের স্তরের ক্লাস, যা Writer ইনপুট স্ট্রীমে লেখা সহজ করে তোলে এবং UTF-8 এনকোডিং সাপোর্ট করে।


PrintWriter ক্লাসের বৈশিষ্ট্য:

  • println(): লাইন প্রিন্ট করার পরে একটি নতুন লাইন যোগ করে।
  • print(): শুধুমাত্র ডেটা প্রিন্ট করে, কিন্তু নতুন লাইন যোগ করে না।
  • printf(): ফরম্যাটেড আউটপুট প্রিন্ট করার জন্য ব্যবহৃত হয়।
  • write(): ডেটা লেখার জন্য, যেখানে প্রিমিটিভ ডেটা টাইপ ব্যবহার করা যায়।
  • flush(): সমস্ত বাফার করা ডেটা আউটপুটে লিখে দেয়।
  • close(): স্ট্রিমটি বন্ধ করে।

PrintWriter দিয়ে Text Data লেখা

এখানে একটি উদাহরণ যেখানে PrintWriter ব্যবহার করে একটি ফাইলে Text Data লেখা হবে।

Text Data লেখার উদাহরণ:

import java.io.*;

public class PrintWriterExample {
    public static void main(String[] args) {
        try (PrintWriter writer = new PrintWriter(new FileWriter("output.txt"))) {
            // টেক্সট ডেটা লেখা
            writer.println("Hello, Java!");  // একটি লাইন প্রিন্ট করে এবং একটি নতুন লাইন যোগ করে
            writer.print("This is a sample text."); // শুধুমাত্র লেখে, নতুন লাইন যোগ করে না
            writer.printf("Integer: %d, Float: %.2f", 42, 3.14); // ফরম্যাটেড আউটপুট
            writer.println();  // একটি নতুন লাইন
            System.out.println("Text data written to output.txt");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • PrintWriter ব্যবহার করে output.txt ফাইলে টেক্সট ডেটা লেখা হচ্ছে।
  • println(), print(), এবং printf() মেথডগুলির মাধ্যমে ফরম্যাটেড এবং সাধারণ টেক্সট আউটপুট তৈরি করা হয়েছে।

আউটপুট (output.txt):

Hello, Java!
This is a sample text.Integer: 42, Float: 3.14

PrintWriter দিয়ে Object Data লেখা

PrintWriter এর মাধ্যমে অবজেক্ট ডেটা stringified ফরম্যাটে লেখা সম্ভব। তবে যদি আপনি অবজেক্টগুলো writeObject() এর মাধ্যমে serialize করতে চান, তাহলে আপনাকে ObjectOutputStream ব্যবহার করতে হবে। কিন্তু, PrintWriter কে ব্যবহার করে সাধারণত আপনি অবজেক্টের প্রপার্টি গুলোকে স্ট্রিং আকারে লিখবেন।

Object Data লেখার উদাহরণ (Stringified Format):

import java.io.*;

class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public class PrintWriterObjectExample {
    public static void main(String[] args) {
        try (PrintWriter writer = new PrintWriter(new FileWriter("person.txt"))) {
            Person person = new Person("John", 30);
            // Person অবজেক্টের প্রপার্টি স্ট্রিং আকারে লেখানো হচ্ছে
            writer.println("Name: " + person.name);
            writer.println("Age: " + person.age);
            System.out.println("Object data written to person.txt");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • এখানে একটি Person অবজেক্ট তৈরি করা হয়েছে এবং তার name এবং age প্রপার্টি PrintWriter ব্যবহার করে person.txt ফাইলে লেখা হয়েছে।

আউটপুট (person.txt):

Name: John
Age: 30

PrintWriter এর অন্যান্য সুবিধা

  1. Formatted Output: PrintWriter ক্লাসটি ফরম্যাটেড আউটপুট সমর্থন করে। যেমন, printf() এবং format() মেথড ব্যবহার করে আপনি আউটপুটকে formatted আকারে প্রিন্ট করতে পারেন।
  2. Automatic Line Breaks: println() মেথড ব্যবহার করার মাধ্যমে প্রতিটি লাইন শেষে নতুন লাইন যোগ করা যায়। এটা বিশেষত ব্যবহারিক যখন আপনি ডেটা line by line প্রিন্ট করতে চান।
  3. Unicode Support: PrintWriter ক্লাস UTF-8 বা অন্য Unicode এনকোডিং সাপোর্ট করে, যা আপনাকে বিভিন্ন ভাষার টেক্সট সংরক্ষণ এবং প্রিন্ট করতে সহায়ক।
  4. Buffered Output: PrintWriter স্ট্রীমের মাধ্যমে লেখার সময় buffering করে, যার ফলে performance উন্নত হয়।

PrintWriter এর সীমাবদ্ধতা

  1. Character-based Streams Only: PrintWriter শুধুমাত্র character-based streams এর জন্য উপযুক্ত। যদি আপনি binary data (যেমন int, float, byte array) লিখতে চান, তখন আপনাকে DataOutputStream ব্যবহার করতে হবে।
  2. Stringified Format: PrintWriter দ্বারা অবজেক্ট ডেটা stringified আকারে লেখা যায়, তবে এটি অবজেক্টের প্রকৃত স্টেট সংরক্ষণ বা পুনঃপ্রসেস করতে সক্ষম নয়, সেক্ষেত্রে ObjectOutputStream ব্যবহার করা উচিত।

  • PrintWriter Java I/O প্যাকেজের একটি শক্তিশালী ক্লাস যা text data লেখার জন্য ব্যবহৃত হয়।
  • এটি formatted output এর জন্য বিশেষভাবে উপযোগী এবং Unicode সমর্থন সহ সহজেই ডেটা স্ট্রিমে বা ফাইলে লেখার সুবিধা প্রদান করে।
  • PrintWriter ব্যবহার করে টেক্সট ডেটা, সাধারণ স্ট্রিং বা অবজেক্টের স্ট্রিংified প্রপার্টি লেখার ক্ষেত্রে এটি কার্যকরী।
  • যেহেতু এটি character-based stream, এটি বাইনারি ডেটা লেখার জন্য উপযুক্ত নয়, এবং সেই জন্য DataOutputStream ব্যবহার করা উত্তম।
Content added By

PrintStream এবং PrintWriter হল Java I/O প্যাকেজের ক্লাস যা output stream হিসেবে ব্যবহৃত হয় এবং টেক্সট বা বাইনারি ডেটা আউটপুট প্রিন্ট করার জন্য ডিজাইন করা হয়েছে। এই ক্লাসগুলি ডেটা আউটপুট করার সময় ফরম্যাটেড আউটপুট প্রদান করতে পারে এবং একটি স্ট্যান্ডার্ড আউটপুট (যেমন System.out) অথবা ফাইল বা অন্যান্য স্ট্রিমে আউটপুট প্রেরণ করতে সাহায্য করে।

এই দুইটি ক্লাস মূলত ফাইলের আউটপুট এবং কনসোলে আউটপুট করতে ব্যবহৃত হয়, তবে PrintWriter ক্লাস Unicode সাপোর্ট সহ text-based output প্রদান করে, যেখানে PrintStream শুধুমাত্র byte-based output প্রদান করে।


PrintStream Class:

PrintStream ক্লাসটি OutputStream এর একটি সাবক্লাস এবং এটি ডেটা প্রিন্ট করার জন্য ব্যবহৃত হয়। এটি System.out-এর মাধ্যমে আউটপুট প্রিন্ট করতে ব্যবহৃত হয় এবং এটি print(), println(), এবং printf() মেথড সরবরাহ করে।

PrintStream এর সুবিধা:

  1. printf() মেথড: ফরম্যাটেড আউটপুট প্রদানে সহায়ক।
  2. println() মেথড: নতুন লাইনে আউটপুট লেখে।
  3. System.out-এর মাধ্যমে কনসোলে আউটপুট প্রদান।

PrintWriter Class:

PrintWriter ক্লাসটি Writer এর একটি সাবক্লাস এবং এটি Character Stream হিসেবে কাজ করে। এটি print(), println(), এবং printf() মেথড সরবরাহ করে, তবে এটি Unicode সাপোর্ট করে, যা text-based I/O এর জন্য ব্যবহারযোগ্য।

PrintWriter এর সুবিধা:

  1. printf() মেথড: ফরম্যাটেড আউটপুট।
  2. println() মেথড: নতুন লাইনে আউটপুট।
  3. System.out বা ফাইল এ আউটপুট লিখতে ব্যবহার করা যায়।

PrintStream এবং PrintWriter এর উদাহরণ:

1. PrintStream এর উদাহরণ:

import java.io.*;

public class PrintStreamExample {
    public static void main(String[] args) {
        // কনসোলে আউটপুট প্রিন্ট করার জন্য PrintStream ব্যবহার
        PrintStream ps = System.out;
        ps.println("Hello, World! This is printed using PrintStream.");
        
        // একটি ফাইলে আউটপুট প্রিন্ট করার জন্য PrintStream ব্যবহার
        try (PrintStream fileOut = new PrintStream("output.txt")) {
            fileOut.println("This is a line written to the file using PrintStream.");
            System.out.println("Data written to file successfully.");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • System.out ব্যবহার করে কনসোলে আউটপুট প্রিন্ট করা হয়েছে।
  • PrintStream ব্যবহার করে output.txt ফাইলে ডেটা লেখা হয়েছে।

আউটপুট (কনসোলে):

Hello, World! This is printed using PrintStream.
Data written to file successfully.

ফাইল output.txt এর কন্টেন্ট:

This is a line written to the file using PrintStream.

2. PrintWriter এর উদাহরণ:

import java.io.*;

public class PrintWriterExample {
    public static void main(String[] args) {
        // কনসোলে আউটপুট প্রিন্ট করার জন্য PrintWriter ব্যবহার
        PrintWriter pw = new PrintWriter(System.out);
        pw.println("Hello, World! This is printed using PrintWriter.");
        
        // একটি ফাইলে আউটপুট প্রিন্ট করার জন্য PrintWriter ব্যবহার
        try (PrintWriter fileOut = new PrintWriter("output.txt")) {
            fileOut.println("This is a line written to the file using PrintWriter.");
            fileOut.printf("Formatted number: %.2f\n", 123.456);
            System.out.println("Data written to file successfully.");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • System.out ব্যবহার করে কনসোলে আউটপুট প্রিন্ট করা হয়েছে।
  • PrintWriter ব্যবহার করে output.txt ফাইলে ডেটা লেখা হয়েছে এবং printf() মেথডের মাধ্যমে ফরম্যাটেড আউটপুট প্রদান করা হয়েছে।

আউটপুট (কনসোলে):

Hello, World! This is printed using PrintWriter.
Data written to file successfully.

ফাইল output.txt এর কন্টেন্ট:

This is a line written to the file using PrintWriter.
Formatted number: 123.46

PrintStream এবং PrintWriter এর মধ্যে পার্থক্য:

বিষয়PrintStreamPrintWriter
Stream TypeByte Stream (Character Encoding এর জন্য উপযুক্ত নয়)Character Stream (Unicode সাপোর্ট করে)
Methodprint(), println(), printf()print(), println(), printf()
Use CaseSystem.out এর মাধ্যমে বাইনারি ডেটা বা টেক্সট প্রিন্ট করাটেক্সট ফাইল বা স্ট্রিমে text-based I/O প্রিন্ট করা
Unicode SupportNo Unicode supportSupports Unicode (Character Encoding)
File WritingPrintStream ব্যবহার করে বাইনারি বা টেক্সট ফাইল লেখা যায়PrintWriter ব্যবহার করে শুধুমাত্র টেক্সট ফাইল লেখা যায়
Main AdvantageByte Stream সাপোর্ট, ফাইল বা কনসোলে দ্রুত আউটপুটCharacter Stream সাপোর্ট, ফরম্যাটেড আউটপুট প্রিন্টিং

  • PrintStream এবং PrintWriter ক্লাস দুটি Java I/O সিস্টেমের গুরুত্বপূর্ণ অংশ, যা output স্ট্রিম পরিচালনার জন্য ব্যবহৃত হয়।
  • PrintStream বাইনারি ডেটার জন্য উপযুক্ত, তবে PrintWriter টেক্সট ডেটার জন্য আরও কার্যকরী এবং এটি Unicode সাপোর্ট করে।
  • এই ক্লাসগুলো formatted output (যেমন printf() মেথড) সরবরাহ করে এবং ডেটা দ্রুত এবং কার্যকরভাবে আউটপুট প্রিন্ট করার জন্য ব্যবহৃত হয়।

PrintWriter সাধারণত text-based I/O এবং Unicode সাপোর্টের জন্য ব্যবহৃত হয়, যেখানে PrintStream সাধারণত byte-based output এবং স্ট্যান্ডার্ড আউটপুট (কনসোল) ব্যবহারের জন্য উপযুক্ত।

Content added By
Promotion

Are you sure to start over?

Loading...