+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 پاسخ 532 بازدید
0 امتیاز
1 پاسخ 694 بازدید
+1 امتیاز
1 پاسخ 467 بازدید
+1 امتیاز
1 پاسخ 1.8هزار بازدید
0 امتیاز
0 پاسخ 289 بازدید
0 امتیاز
1 پاسخ 657 بازدید
0 امتیاز
0 پاسخ 313 بازدید
سوال شده 7 سال قبل در برنامه نویسی توسط javad75 (42 امتیاز)
+1 امتیاز
2 پاسخ 1.8هزار بازدید
...