سوال 1: استاد کیورد assert تو کد زیر چه کاری انجام میدهد؟ و کجاها استفاده میشه؟
assert fileOutputStream != null;
سوال 2 : اگه چند تا Stream داشتیم به چه صورت باید کار کنیم همه رو باید به عنوان آرگومان try پاس بدیم؟
سلام امیر جان،
در مورد سوال اول، این کلمه کلیدی برای چک کردن یک شرط توی کد استفاده میشه. مثلا شما در ابتدای کد میخواین چک کنید که آیا کسی که میخواد یک محصول رو خریداری کنه پول کافی در حسابش داره یا خیر. هم میتونید از if استفاده کنید و هم از assert. تفاوت اینجاست که اگر assert درست نباشه کد دیگه جلوتر نمیره و exception تولید میشه.
در مورد سوال دوم، اصلا مفهوم نبود. از stream و try که ۲ تا چیز متفاوت هستن صحبت کردی که متوجه ربطشون با هم نشدم.
سپهر نامدار۲۸ اردیبهشت ۱۴۰۱، ۱۰:۳۵
ممنون استاد متوجه شدم قسمت اول رو.
استاد در مورد سوال دوم تو این جلسه گفتید اگه تعداد فایل استریمها زیاد بشه چون exception تولید میکنن چه برای ایجاد کردن چه برای بستن، نیازه که برای بستن هرکدوم try , catch جداگانه بنویسیم که کدمون شلوغ و کثیف میشه، ولی گفتید تو جاوا 8 یه فیچری اضافه شده که ما این فایل استریمها رو میتونیم تو آرگومان try پاس بدیم و دیگه نیاز نیست finally بنویسیم و برای close کردن دوباره برای هرکدوم try,catch جداگانه بنویسیم این فیچر جدید خودش چه exception تولید کنه چه نکنه زمانی که کارمون با استریمها تمام شد استریممون رو میبنده .الان سوال من این بود اگه تعداد این فایل استریمها زیاد بشه باید چطور این کارو انجام بدیم؟ مثل همین مثالی که تو این جلسه زدید:
try(FileOutputStream fileOutputStream = new FileOutputStream("test.txt")) {
fileOutputStream.write("New Hello World!".getBytes(StandardCharsets.UTF_8));
} catch (IOException e) {
System.out.println("there is a problem with test.txt file");
e.printStackTrace();
}
امیر رحمانی۲۸ اردیبهشت ۱۴۰۱، ۱۱:۰۰
متوجه شدم، توی همون try یه ویرگول میزارید و استیرمهای دیگه رو اضافه میکنید. هر چندتا که بود. برای اینکه کد خوانا بمونه بعد ویرگول بیاید خط بعد که کد دراز نشه.