💎 تفاوت BufferedWriter و FileWriter
⭕️ بافر چیست؟
یه حافظه موقت که اطلاعات تا زمانی که کامل نشده اونجا ذخیره میشه.
⭕️ فلاش flush چیست؟
یعنی تمیز کردن جریان (stream) و ارسال داده ها به مقصد (file)
⭕️ نوشتن یا write چیست؟
این متد برای نوشتن در فایل استفاده میشه
🔆 کلاس BufferedWriter
این کلاس حرف به حرف رو داخل بافر ذخیره میکنه و بعد از کامل شدن، یکباره به مقصد ارسال میکنه. حافظه بافر محدوده ولی به اندازه کافی برای اکثر اهداف و استفاده ها جا داره. BufferedWriter یه ذره کند عمل میکنه (چون تا پر شدن بافر صبر میکنه) ولی در کل برای نوشتن فقط یکبار flush میکنه یا بهتر بگم، یک بار system call میکنه که این میتونه در مقیاس بالاتر کارآمد باشه.
🔆 کلاس FileWriter
این کلاس نسبت به BufferedWriterسریعتره ولی از لحاظ پرفورمنس ناکارآمده! فایل رایتر با هر بار صدا زدن متد write، پشتش اطلاعات رو ارسال میکنه
مثال:
⭕️ از کدوم استفاده کنیم؟
زمانی از فایل رایتر استفاده کنید که اطلاعات کمی برای ذخیره دارید. چون همونطور که گفتم در مقیاس بالاتر، باعث کندی برنامه میشه.
زمانی از بافرد رایتر استفاده کنید که لزوم به نوشتن داخل فایل به دفعات بالا باشه.
#FileWriter #BufferedWriter #Buffer #flush #write #flush() #write() #IO #File
@pieceJava
⭕️ بافر چیست؟
یه حافظه موقت که اطلاعات تا زمانی که کامل نشده اونجا ذخیره میشه.
⭕️ فلاش flush چیست؟
یعنی تمیز کردن جریان (stream) و ارسال داده ها به مقصد (file)
⭕️ نوشتن یا write چیست؟
این متد برای نوشتن در فایل استفاده میشه
🔆 کلاس BufferedWriter
این کلاس حرف به حرف رو داخل بافر ذخیره میکنه و بعد از کامل شدن، یکباره به مقصد ارسال میکنه. حافظه بافر محدوده ولی به اندازه کافی برای اکثر اهداف و استفاده ها جا داره. BufferedWriter یه ذره کند عمل میکنه (چون تا پر شدن بافر صبر میکنه) ولی در کل برای نوشتن فقط یکبار flush میکنه یا بهتر بگم، یک بار system call میکنه که این میتونه در مقیاس بالاتر کارآمد باشه.
🔆 کلاس FileWriter
این کلاس نسبت به BufferedWriterسریعتره ولی از لحاظ پرفورمنس ناکارآمده! فایل رایتر با هر بار صدا زدن متد write، پشتش اطلاعات رو ارسال میکنه
مثال:
for(int i = 0; i < 100; i++) {
writer.write("foorbar");
writer.write(NEW_LINE);
}
writer.close();
تو این مثال اگه از فایل رایتر استفاده کرده باشید، باید 200 بار (100*2) بار سیستم کال کنید و اطلاعات رو داخل دیسک ذخیره کنید! که این خودش دلیلی بر ناکارآمدیه ولی اگه از بافرد رایتر استفاده کنید، فقط 1 بار لازم به system call هست⭕️ از کدوم استفاده کنیم؟
زمانی از فایل رایتر استفاده کنید که اطلاعات کمی برای ذخیره دارید. چون همونطور که گفتم در مقیاس بالاتر، باعث کندی برنامه میشه.
زمانی از بافرد رایتر استفاده کنید که لزوم به نوشتن داخل فایل به دفعات بالا باشه.
#FileWriter #BufferedWriter #Buffer #flush #write #flush() #write() #IO #File
@pieceJava
👍1