کلاس PrintWriter

کلاس PrintWriter کلاسی کمکی است که امکانات زیادی را در اختیار ما قرار می دهد و به ما اجازه می دهد به صورت مستقیم بر روی فایل یا خروجی کنسول سیستم یا هر جریان خروجی دیگری کار کنیم ، به علاوه این کلاس از کلاس های بهینه سازی شده است و سرعت فوق العاده ای دارد. برای استفاده از این کلاس باید از یکی از سازنده های زیر برای ساخت شی جدید از آن استفاده کنیم :

PrintWriter (File file)
PrintWriter(File file,String charsetName)
PrintWriter(OutputStream out)
PrintWriter(OutputStream out,boolean autoFlush)
PrintWriter(String fileName)
PrintWriter(String fileName,String charset)
PrintWriter(Writer out)
PrintWriter(Writer out,boolean autoFlush)

متد های پر کاربرد PrintWriter در جدول زیر آمده است:

متد کاربرد
close () جریان خروجی را بسته و منابع استفاده شده را آزاد می کند
flush() داده های بافر شده در حافظه را در استریم خروجی ارسال می کند.
print(boolean b) یک مقدار boolean را در استریم خروجی می نویسد.
print(char c) یک کاراکتر را در جریان خروجی می نویسد.
print(char[] str) یک آرایه از کاراکتر ها را در جریان خروجی می نویسد.
print(double d) یک مقدار double را در جریان خروجی می نویسد.
print(float f) یک مقدار float را در جریان خروجی می نویسد.
print(int i) یک مقدار int را در جریان خروجی می نویسد.
print(long l) یک مقدار long را در جریان خروجی می نویسد.
print(Object o) یک شی را در جریان خروجی می نویسد.
print(String s) یک رشته متنی را در جریان خروجی می نویسد.
PrintWriter format(String format,Object..o) برای قالب بندی خروجی استفاده می شود.
println() یک جدا کننده خط جدید در جریان خروجی می نویسد.
println(boolean b) یک مقدار boolean را در استریم خروجی می نویسد.
println(char c) یک کاراکتر را در جریان خروجی می نویسد.
println(char[] str) یک آرایه از کاراکتر ها را در جریان خروجی می نویسد.
println(double d) یک مقدار double را در جریان خروجی می نویسد.
println(float f) یک مقدار float را در جریان خروجی می نویسد.
println(int i) یک مقدار int را در جریان خروجی می نویسد.
println(long l) یک مقدار long را در جریان خروجی می نویسد.
println(Object o) یک شی را در جریان خروجی می نویسد.
println(String s) یک رشته متنی را در جریان خروجی می نویسد.
write(char c) یک کاراکتر را در جریان خروجی می نویسد.
write(char[] cbuf) آرایه ای از کاراکتر ها در جریان خروجی می نویسد.
write(char[] cbuf,int offset,int length) قسمتی از یک آرایه را در جریان خروجی می نویسد.
write(String s) یک رشته متنی را در جریان خروجی می نویسد.
write(String s,int offset,int length) قسمتی از یک رشته متنی را در جریان خروجی می نویسد.

از PrintWriter می توان برای قالب بندی خروجی استفاده کرد ، این قالب بندی می تواند بر روی فایل خروجی ، خروجی شبکه یا حتی خروجی کنسول سیستم باشد ، مثال زیر نحوه استفاده از متد printf برای قالب بندی را نشان می دهد.

import java.io.*;

public class PrintWriterDemo 
{
    public PrintWriterDemo() 
    {
        PrintWriter printwriter = new PrintWriter(System.out, true);

        printwriter.printf("Hello %5d\n", 7);
        printwriter.printf("Hello %5d\n", 77);
        printwriter.printf("Hello %5d\n", 777);
        printwriter.printf("Hello %5d\n", 7777);
        printwriter.printf("Hello %5d\n", 77777);
    }
    public static void main(String[] args) 
    {
        new PrintWriterDemo();
    }
}
Hello     7
Hello    77
Hello   777
Hello  7777
Hello 77777

با استفاده از %d مشخص می کنیم که قصد داریم یک عدد صحیح را چاپ کنیم ، %nd مشخص می کند که میخواهیم به اندازه n کاراکتر فاصله ایجاد کنیم.در مثال بالا به جای مقدار 5 اعداد دیگری را نیز امتحان کنید.

import java.io.*;

public class PrintWriterDemo 
{
    public PrintWriterDemo() 
    {
        PrintWriter printwriter = new PrintWriter(System.out, true);

        printwriter.printf("Hello %.3f\n", 5.87878787);
    }
    public static void main(String[] args) 
    {
        new PrintWriterDemo();
    }
}
Hello 5.879

در مثال بالا %f مشخص می کند که قصد چاپ کردن یک مقدار ممیز شناور را داریم ، %.3f مشخص می کند که قصد داریم تا سه رقم بعد از اعشار را چاپ کنیم ، دقت کنید که ارقام گرد می شوند. در مثال زیر از PrintWriter برای نوشتن در فایل استفاده می کنیم.

import java.io.*;

public class PrintWriterDemo 
{
    public PrintWriterDemo() 
    {
        File myFile = new File("E:/Test.txt");
        PrintWriter printwriter = null;
        try 
        {
            printwriter = new PrintWriter(myFile, "UTF-8");

            printwriter.println("Hello");
            printwriter.println("Java");
            printwriter.println("IO");

            printwriter.flush();
            printwriter.close();
        }
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) 
    {
        new PrintWriterDemo();
    }
}

در مثال بالا چون قصد نوشتن در یک فایل را داریم ابتدا یک شی از کلاس File ایجاد می کنیم ، سپس از روی آن یک PrintWriter ایجاد می کنیم و در پارامتر دوم مشخص می کنیم که قصد داریم با فرمت UTF-8 در فایل بنویسیم ، در ادامه با استفاده از متد println سه خط در فایل می نویسیم و در انتها printwriter را می بندیم.