💎 تفاوت 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
💎 کلاس StringBuffer در جاوا
🔆 یک کلاس مشابه String در رابطه با رشته ها کلاس StringBuffer میباشد. کلاس رشته همانطور که پیش تر بررسی کردیم، غیرقابل تغییر(Immutable)، دارای اندازه ثابت و... میباشد در حالی که StringBuffer قابل تغییر میباشد و از لحاظ افزودن دنباله ای کاراکتر ها نیز منعطف عمل میکند.
🔗 درباره کلاس های Immutable و Mutable از اینجا بخوانید.
🔗 درباره Immutable بودن رشته ها از اینجا بخوانید.
✏️ برخی از متد های پرکاربرد کلاس StringBuffer
1️⃣ append()
برای افزودن یک متن به آخر یک رشته استفاده میشود.
2️⃣ length()
طول رشته ی ایجاد شده از طریق کلاس StringBuffer را برمیگرداند
3️⃣ charAt()
کاراکتر موجود در ایندکس موردنظر را برمیگرداند.
4️⃣ delete()
دنباله ای از کاراکتر ها را از شی ایجاد شده (از این کلاس) حذف میکند.
5️⃣ deleteCharAt()
کاراکتر موجود در ایندکس موردنظر را حذف میکند.
6️⃣ insert()
متنی را در یک موقعیت مشخص شده (ایندکس) وارد میکند
7️⃣ reverse()
رشته مورد نظر در وارون میکند.
8️⃣capacity()
یک ظرفیت برای StringBuffer در نظر میگیرد
9️⃣trimToSize()
میزان حافظه مصرفی برای دنباله ای از رشته ها را به اندازه سایز رشته کاهش میدهد
———
🔰در ادامه یک مثال از این کلاس در رابطه با بررسی متد های این کلاس بررسی خواهیم کرد.
⭕️ (خروجی هر متد بصورت کامنت امده است)
⭕️ (برای خوانایی بیشتر، کد رو بصورت تصویر توی کانال قرار میدم)
———
☕️@pieceJava
🔆 یک کلاس مشابه String در رابطه با رشته ها کلاس StringBuffer میباشد. کلاس رشته همانطور که پیش تر بررسی کردیم، غیرقابل تغییر(Immutable)، دارای اندازه ثابت و... میباشد در حالی که StringBuffer قابل تغییر میباشد و از لحاظ افزودن دنباله ای کاراکتر ها نیز منعطف عمل میکند.
🔗 درباره کلاس های Immutable و Mutable از اینجا بخوانید.
🔗 درباره Immutable بودن رشته ها از اینجا بخوانید.
✏️ برخی از متد های پرکاربرد کلاس StringBuffer
1️⃣ append()
برای افزودن یک متن به آخر یک رشته استفاده میشود.
2️⃣ length()
طول رشته ی ایجاد شده از طریق کلاس StringBuffer را برمیگرداند
3️⃣ charAt()
کاراکتر موجود در ایندکس موردنظر را برمیگرداند.
4️⃣ delete()
دنباله ای از کاراکتر ها را از شی ایجاد شده (از این کلاس) حذف میکند.
5️⃣ deleteCharAt()
کاراکتر موجود در ایندکس موردنظر را حذف میکند.
6️⃣ insert()
متنی را در یک موقعیت مشخص شده (ایندکس) وارد میکند
7️⃣ reverse()
رشته مورد نظر در وارون میکند.
8️⃣capacity()
یک ظرفیت برای StringBuffer در نظر میگیرد
9️⃣trimToSize()
میزان حافظه مصرفی برای دنباله ای از رشته ها را به اندازه سایز رشته کاهش میدهد
———
🔰در ادامه یک مثال از این کلاس در رابطه با بررسی متد های این کلاس بررسی خواهیم کرد.
⭕️ (خروجی هر متد بصورت کامنت امده است)
⭕️ (برای خوانایی بیشتر، کد رو بصورت تصویر توی کانال قرار میدم)
public class Main {
public static void main(String[] args) {
//Telegram: @pieceJava
StringBuffer sb = new StringBuffer("ITHOOLOO");
//prints length of String
System.out.println(sb.length());// prints 8
//appends .comi to String
sb.append(".comi");
System.out.println(sb); // prints ITHOOLOO.comi
//removes a character at index sb.length()-1
sb.deleteCharAt(sb.length() - 1); // removes i from IT...com(i)
System.out.println(sb);// prints ITHOOLOO.com
//removes sequence of characters from index 8 to sb.length()
sb.delete(8, sb.length());//removes ".com"
System.out.println(sb);// prints ITHOOLOO
//reverses String
sb.reverse();
System.out.println(sb);// prints OOLOOHTI
//inserts a String at index 0
sb.insert(0, "HELLO FROM ");
System.out.println(sb);//prints hello from OOLOOHTI
}
}
#StringBuffer #Buffer #Mutable #reverse ———
☕️@pieceJava
Telegram
تیکه پاره های جاوا
💎معنی Mutable و Immutable بودن کلاس ها (قابل تغییر و غیر قابل تغییر بودن)
🔅به آبجکت هایی که بعد از ایجاد شدن قابل تغییر هستند، Mutable گفته میشود. برای مثال کلاس Date یا StringBuilder
🔅در مقابل به ابجکت هایی که پس از ایجاد شدن قابل تغییر نیستند، Immutable…
🔅به آبجکت هایی که بعد از ایجاد شدن قابل تغییر هستند، Mutable گفته میشود. برای مثال کلاس Date یا StringBuilder
🔅در مقابل به ابجکت هایی که پس از ایجاد شدن قابل تغییر نیستند، Immutable…
👍2❤1