+1 امتیاز
قبل در برنامه نویسی توسط (45 امتیاز)
ویرایش شده قبل توسط

کی باید از ()System.out.flush در جاوا استفاده کرد و برای چه ؟

برای مثال در متد زیر چرا از ()System.out.flush استفاده شده ؟

    public static String getInput(String prompt) throws IOException {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.println(prompt);
        System.out.flush();
        return reader.readLine();

    }

1 پاسخ

0 امتیاز
قبل توسط (1.1هزار امتیاز)

System.out در حقیقت یک نوع PrintStream است که بصورت پیشفرض وقتی کاراکتر newline درونش نوشته شود متد flush را فراخوانی می کند و  همچنین قابلیت autoFlush نیز دارد. در مثال شما چه متد flush فراخوانی شود چه نشود هیچ فرقی ندارد چون System.out وقتی اطلاعاتی درونش نوشته شود بصورت خودکار متد flush را فراخوانی می کند.

اما کی باید از متد ()System.out.flush استفاده کرد؟

اگر شما با استفاده از متد System.setOut یک PrintStream جدید را با System.out جایگزین کنید که از قابلیت autoFlush استفاده نمی کند آنگاه باید برای اعمال اطلاعات در خروجی باید خودتان در کد متد flush را فراخوانی کنید.

قبل توسط (45 امتیاز)
ویرایش شده قبل توسط
سلام. ممنون از پاسختون.
اینطور که من از پاسخ شما و جستجو هام فهمیدم این متد (در هر آبجکتی )مجبور می کنه آنچه که در بافر هست در فایل یا Console نوشته شود و بافر را پاک می کند. در آبجکت هایی که قابلیت autoFlush ندارند عدم انجام flush باعث عدم ذخیره داده مثلا در فایل می شه. مانند نمونه ی زیر که اگر برنامه خاتمه یابد Hello نوشته و JavabYab نوشته نمی شود البته در صورت ننوشتن ()writer.close :
("File file = new File("sample.txt
;(PrintWriter writer = new PrintWriter(file
;("writer.println("Hello
;()writer.flush
;("writer.println("JavabYab

در صورت درک اشتباه تصحیح فرمایید.
با تشکر
قبل توسط (1.1هزار امتیاز)
+1
دقیقا درست درک کردین.

سوالات مشابه

0 امتیاز
2 پاسخ 526 بازدید
0 امتیاز
1 پاسخ 686 بازدید
+1 امتیاز
1 پاسخ 461 بازدید
+1 امتیاز
1 پاسخ 1.8هزار بازدید
0 امتیاز
0 پاسخ 285 بازدید
0 امتیاز
1 پاسخ 643 بازدید
0 امتیاز
0 پاسخ 310 بازدید
سوال شده 7 سال قبل در برنامه نویسی توسط javad75 (42 امتیاز)
+1 امتیاز
2 پاسخ 1.7هزار بازدید
...