تیکه پاره های جاوا
527 subscribers
93 photos
24 videos
7 files
58 links
سلام خوش اومدید. اینجا یادداشت ها و تکه های جاوا رو کنار هم قرار میدیم :) مطالب کاملا اختصاصی و دستنویس هستند. کپی فقط با ذکر منبع و آیدی کانال❤️

📝برای تدریس پیام دهید
محمدرضا عظیمی‌فرد
🆔 @mrvj475
Download Telegram
💎 تفاوت BufferedWriter و FileWriter


⭕️ بافر چیست؟
یه حافظه موقت که اطلاعات تا زمانی که کامل نشده اونجا ذخیره میشه.
⭕️ فلاش 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
💎 ساختار Try With Resources

🔅 یه حالت دیگه از ترای کچ داریم به نام Try With Resources که از نسخه 7 جاوا اضافه شده.
بیشترین استفاده رو با ریسورس ها داره. ریسورس اصطلاحا به ابجکتی گفته میشه که بعد از اتمام کار لازمه که کلوز بشه. مثل فایل ها، سوکت ها و... پیش از این بستن ابجکت لازم به تعریف بخش فاینلی داشت. مثلا:
FileWriter fw = null;
try{
fw = new FileWriter("....txt");
...
}catch(IOException e){
...
}finally{
fw.close();
}
بخش فاینلی چه درصورتی که برنامه دارای خطا یا چه بدون خطا بود در هر صورت اجرا میشه.
اما با Try With Resources احتیاجی به بخش فاینلی نیست و خود استیتمنت بصورت خودکار فایل رو کلوز میکنه. کلوز کردن فایل میتونه جلوی خیلی از مشکلات از جمله خراب شدن فایل و ... رو بگیره.
🔅 باز نویسی کد بالا با ساختار ترای ویز ریسورسز:
try(FileWriter fw = new FileWriter("...txt")){
...
}catch(IOException e){
...
}

#Try_Catch #Try_With_resources #File #IO #FileWriter #close #Exception

@pieceJava
💎 اضافه کردن به فایل بدون حذف شدن اطلاعات قبلی

یک راه برای نوشتن داخل فایل، استفاده از FileWriter هست.
FileWriter fw = new FileWriter("myText.txt");

اما با هر بار باز کردن و نوشتن داخل فایل ، اطلاعات قبلی پاک میشه و باید دوباره نوشته بشه.

👈 برای اینکه اطلاعات جدید به اطلاعات قبلی append بشه (به خطوط بعدی اضافه بشه) کنار ادرس فایل ، true رو قرار میدیم:
FileWriter fw = new FileWriter("myText.txt",true);

ترو به معنای فعال سازی قابلیت append هست.

#IO #FileWriter

@pieceJava