پرش به محتوای اصلی
مسیر تخصصی جاوا و Spring
درخواست پروژهارتباط با ماراهنما
جاواپرویاد بگیر، تمرین کن، حرفه‌ای بساز
خانهدوره‌هاآموزش رایگانوبلاگمدرس‌هاخدمات
خانه♨️ جلسه سی و یکم - کلاس InputStreamReader
آموزش برنامه نویسی »

♨️ جلسه سی و یکم - کلاس InputStreamReader

در این جلسه با رعایت اصل پیشنیازی به کلاس InputStreamReader که کاربرد آن خواندن اطلاعات از فایل می باشد پرداخته شده است

۸ دقیقه مطالعهآموزش برنامه نویسی »آموزش جاوا و انجام پروژه های برنامه نویسی
♨️ جلسه سی و یکم - کلاس InputStreamReader
محتوای منتخب جاواپرو

خلاصه مطلب

در این جلسه با رعایت اصل پیشنیازی به کلاس InputStreamReader که کاربرد آن خواندن اطلاعات از فایل می باشد پرداخته شده است
نوع محتوامقاله آموزشی
موضوعآموزش برنامه نویسی »
زمان مطالعه۸ دقیقه
آخرین ویرایش۲۵ شهریور ۱۴۰۳

فهرست جلسات دوره مقدماتی جاوا

مقدمه اول | جاوا چیست؟

مقدمه دوم | تاریخچه جاوا

مقدمه سوم | ویژگی‌های زبان جاوا

جلسه اول | راهنمای دانلود و نصب JDK

جلسه دوم | اجرای یک برنامه جاوا در Notepad

جلسه سوم | راهنمای دانلود و نصب Eclipse

جلسه چهارم | ساخت اولین برنامه جاوا در Eclipse

جلسه پنجم | متغیر ها در جاوا

جلسه ششم | تغییر فونت محیط Eclipse

جلسه هفتم | عملگر‌های پایه ای جاوا

جلسه هشتم | دستورات شرطی

جلسه نهم | اشیا و کلاس ها

جلسه دهم | ورودی گرفتن

جلسه یازدهم | حلقه‌های کنترلی

جلسه دوازدهم | کلمه کلیدی static

جلسه سیزدهم | کلاس Math

جلسه چهاردهم | کلاس String

جلسه پانزدهم | آرایه‌های یک بعدی

جلسه شانزدهم | کنترل سطح دسرسی (Modifiers)

جلسه هفدهم | متدها در جاوا

جلسه هجدهم | کلمه کلیدی this

جلسه نوزدهم | کلاس‌های داخلی

جلسه بیستم | ارث بری در جاوا

جلسه بیست و یکم | کلمه کلیدی final

جلسه بیست و دوم | Overriding در جاوا

جلسه بیست و سوم | Polymorphism( چند ریختی)

جلسه بیست و چهارم | چندریختی را بهتر یادبگیرید

جلسه بیست و پنجم | Abstraction( انتزاع)

جلسه بیست و ششم | Encapsulation(کپسوله سازی)

جلسه بیست و هفتم | اینترفیس (Interface)

جلسه بیست و هشتم | کلاس Random

جلسه بیست و نهم | Exceptions (استثناها)

جلسه سی ام | کار با فایل در جاوا(Files and I/O)

جلسه سی و یکم | کلاس InputStreamReader

جلسه سی و دوم | کلاس OutputStreamWriter

جلسه سی و سوم | کلاس BufferedReader

جلسه سی و چهارم | کلاس BufferedWriter

جلسه سی و پنجم | Serialization در جاوا

جلسه سی و ششم | چندنخی(Multithreading)

جلسه سی و هفتم | آرایه دو بعدی در جاوا

جلسه سی و هشتم | کلاس ArrayList در جاوا

جلسه سی و نهم | Non Access Modifier در جاوا

دوره رایگان مقدماتی زبان جاوا
دوره رایگان مقدماتی زبان جاوا

در جلسه سی ام به برخی از کلاس های خواندن و نوشتن در زمینه کار با فایل در جاوا پرداختیم. اما خب کار با فایل به همین کلاس ها ختم نمی شود و همان طور که از قبل گفتیم مبحث کار با فایل خیلی گسترده است که ما سعی می کنیم مفاهیم پرکاربردی که بیشتر نیاز بهشون داریم رو کار کنیم.

نکته: برای این که آموزش ها خسته کننده و گیج کننده نشود تکه تکه مفاهیم و کلاس های کار فایل را در جلسات مجزا بررسی می کنیم.

InputStreamReaderکلاس InputStreamReader نیز برای خواندن داده های یک فایل استفاده می شود.

کلاس InputStreamReader پلی از جریان بایت ها به جریان کاراکترهاست. این کلاس داده های بایتی رو میخونه ،برامون این بایت ها را بصورت مجموعه ای از کاراکترها رمزگشایی میکنه و در نهایت ما می توانیم از این مجموعه ای از کاراکترها استفاده کنیم.

برای استفاده از کلاس InputStreamReader باید پکیج java.io.InputStreamReader را درسورس کد برنامه مون import کنیم.

import java.io.InputStreamReader ;

✔ پس درکل برای خواندن مجموعه ای از کاراکتر ها از کلاس InputStreamReader استفاده می کنیم.

این کلاس نیز دارای چندین سازنده می باشد که با توجه به نیاز آنها را هنگام شی سازی صدا می زنیم:

InputStreamReader(InputStream in)

✔ یکی از سازنده های این کلاس بصورت پیشفرض برای استفاده از مجموعه ای کاراکترها می باشد.

✔ همون طور که مشاهده می کنید این سازنده به عنوان پارامتر یک شی از کلاس InputStream دریافت می کند.از آنجایی که کلاس FileInputStream فرزند کلاس InputStream هستش این سازنده می تواند یک شی از نوع FileInputStream را نیز دریافت کند.

برخی از متدهای کلاس InputStreamReader را در زیر بررسی کرده ایم:

void close ()

✔ این متد برای بستن فایلی است که از طریق کلاس InputStreamReader خوانده شده است.

مثال:

package www.javapro.ir; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; public class InputStreamReaderDemo { public static void main(String[] args) throws IOException { FileInputStream fis = null; InputStreamReader isr = null; int i; char c; try { // new input stream reader is create d fis = new FileInputStream("test.txt"); isr = new InputStreamReader(fis); // input stream reader is closed isr.close(); System.out. print ("close() invoked "); // read() called after closed method i = isr.read(); c = (char) i; System.out. print ln(c); } catch (Exception e) { // print error System.out. print ("The stream is already closed"); } finally { // closes the stream and releases resources associated if (fis != null) fis.close(); if (isr != null) isr.close(); } } }

خروجی: یک استثنا رخ می دهد و دستور درون بلوک catch اجرا می شود،دلیل رخ دادن استثنا این هست که از طریق شی ساخته شده از کلاس InputStreamReader با نام isr متد read صدا زده شده است.و این در حالی است که در خط قبل از آن شی isr که حاوی آدرس فایل خوانده شده از کامپیوتر می باشد با متد close بسته شده است و دیگر نمی توانیم به داده های درون آن دسرسی پیدا کنیم. (چیزی شبیه یک فایل txt در notepad زمانی می توانید که داده های یک فایل تکس را ببینید که آن فایل را باز کرده باشید )

خروجی در محیط کنسول بصورت زیر است:

close() invoked The stream is already closed

توضیحات:

FileInputStream fis = null; InputStreamReader isr = null;

✔ از دو کلاس FileInputStream و InputStreamReader بدون صدا زدن سازنده آنها شی ایجاد کرده ایم و مقدار null بهشون نسبت داده ایم. نکته ای که باید به ان توجه کنید این است که به همراه کلاس InputStreamReader حتما باید کلاس FileInputStream هم تعریف کنید چون ورودی پارامتر سازنده کلاس InputStreamReader از نوع کلاس InputStream می باشد.

int i; char c;

✔ تعریف دو متغیر ، برای داده های بایتی یک متغیر از نوع int و برای داده های کاراکتری یک متغیر از نوع char ایجاد کرده ایم.

try { // new input stream reader is create d fis = new FileInputStream("test.txt"); isr = new InputStreamReader(fis);

✔ برای کنترل استثنا از بلوک try-catch استفاده شده است.

✔ خب سازنده های دو کلاس را برای اشیا صدا میزنیم.

✔ آدرس فایلی که از قبل درون کامپیوتر ما و در پوشه پروژه ای که این سورس کد درونش قرار دارد را به عنوان پارامتر به سازنده کلاس FileInputStream داده ایم.

✔ شی fis که از نوع کلاس FileInputStream هستش را به عنوان پارامتر به سازنده کلاس InputStreamReader داده ایم.

isr.close();

✔ شی isr که حاوی جریان فایل ورودی ما می باشد را با این متد بسته ایم.با این کار دیگر فایلی که از کامپیوتر خواندیم بسته شده و دیگر به ان دسرسی نداریم

i = isr.read(); c = (char) i; System.out.print ln(c);

✔ قصد داشتیم یک بایت را از فایل بخوانیم و با تبدیل بایت خوانده شده به کاراکتر آن را چاپ کنیم که با استثنا روبرو می شویم-زیرا شی isr که حاوی جریان فایل خوانده شده است که در خط با متد close بسته شده است.

} catch (Exception e) { // print error System.out. print ("The stream is already closed"); } finally { // closes the stream and releases resources associated if (fis != null) fis.close(); if (isr != null) isr.close(); }

✔ به دلیل رخ دادن استثنا دستور درون بلوک catch اجرا می شود و در نهایت صرف نظر از این که چه اتفاقی در برنامه رخ می دهد دستورات درون بلوک finally اجرا می شود و درصورت null نبودن فایل ها همه ی آنها بسته می شود.

int read()

💡 این متد تک به تک کاراکترهای موجود در فایل را میخواند.

مثال :در کامپیوتر پوشه پروژمون یک فایل با نام و فرمت name.txt داریم که حاوی تعدادی اسم به صورت متن (رشته) یا مجموعه ای از کاراکتر ها می باشد بصورت زیر: (تصویر 1) حالا قصد داریم با استفاده از کلاس های FileInputStream و InputStreamReader این فایل را کاراکتر به کاراکتر بخوانیم و در محیط کنسول آنها را چاپ کنیم:

آموزش کار با فایل در جاوا
آموزش کار با فایل در جاوا
package fileIO; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; public class InputStreamReaderDemo { public static void main(String[] args) throws IOException { FileInputStream fis = null; InputStreamReader isr =null; char c; int i; try { // new input stream reader is create d fis = new FileInputStream("name.txt"); isr = new InputStreamReader(fis); // read till the end of the file while((i=isr.read())!=-1) { // int to character c=(char)i; // print char System.out. print ln("Character Read: "+c); } } catch (Exception e) { // print error e. print StackTrace(); } finally { // closes the stream and releases resources associated if(fis!=null) fis.close(); if(isr!=null) isr.close(); } } }
در دوره پیشرفته برنامه نویسی جاوا به صورت ویدئویی به موضوع فایل ها در جاواپرداخته ایم.

خروجی:

Character Read: A Character Read: l Character Read: i Character Read: Character Read: R Character Read: e Character Read: z Character Read: a Character Read: Character Read: h Character Read: a Character Read: s Character Read: a Character Read: n Character Read: Character Read: j Character Read: a Character Read: f Character Read: a Character Read: r Character Read:

✔ همان طور که گفتیم ما کاراکتر به کاراکتر فایل را میخوانیم، حالا اینجا هم می بینید که با هر بار خوانده شده کاراکترهای درون فایل مقادیر آنها در محیط کنسول چاپ شده است.مثلا نام اول ما ali بود که بصورت

a l i

خوانده شده و بعد از آن فاصله یا اسپیس را به عنوان یک کاراکتر خوانده است و غیره.

نکته جدید نداره فقط به خط کد زیر نگاه کنید:

c=(char)i;

✔ در اینجا ما مقدار متغیر از نوع بایت را به متغیر از نوع کاراکتر تبدیل ساخته ایم و درون یک متغیر از نوع کاراکتر ریخته ایم. به این کار عمل casting در جاوا می گوییم خود بحث جدایی است واردش نمی شویم فقط این ذهنیت را داشته باشد اگر خواستید یک متغیر را به متغیر دیگر تبدیل کنیم می توانیم با قرار دادن نوع متغیر درون پرانتز و گذاشتن پرانتز سمت چپ متغیر هدف که سمت راست مساوی قرار دارد آن را تبدیل یا به اصلاح casting می کنیم.

c=(char)i;

✔ i متغیر هدف ما که سمت راست علامت مساوی قرار دارد.در اینجا متغیر i از نوع int می باشد.

✔ نوع متغیری که قصد داریم متغیر هدف را به ان تبدیل کنیم درون پرانتر قرار می دهیم. (char)

حال پرانتز را سمت چپ متغیر هدف قرار می دهیم.

(char)i

در نهایت سمت چپ علامت مساوی متغیری که از نوعی که درون پرانتز وجود دارد را قرار می دهیم.

c=(char)i;

✔ در اینجا متغیر c از نوع char می باشد.

نکته : همه متغیر ها رو نمی شود به روش casting به هم تبدیل کرد.

String b="100000000"; int a=(int)b;

مثلا همچین cast ای رو نمیشه انجام داد در جلسه ای جدا به این مفهوم می پردازیم ،بگذریم فراموشش کنید بریم سراغ اصل مطلب!!!

مثال بالا را بصورت زیر تغییر می دهیم:

***ادامه این جلسه آموزشی را به صورت کامل و مرتب شده در زیر دانلود کنید:

آموزش آسان و ساده زبان برنامه نویسی جاوا
آموزش آسان و ساده زبان برنامه نویسی جاوا
♨️ جلسه سی و یکم - کلاس InputStreamReader
تصویر مرتبط با ♨️ جلسه سی و یکم - کلاس InputStreamReader
♨️ جلسه سی و یکم - کلاس InputStreamReader
تصویر مرتبط با ♨️ جلسه سی و یکم - کلاس InputStreamReader
بخشی از کتاب جلسه سی و یکم - کلاس InputStreamReader را مشاهده می کنید
بخشی از کتاب جلسه سی و یکم - کلاس InputStreamReader را مشاهده می کنید
بخشی از کتاب جلسه سی و یکم - کلاس InputStreamReader را مشاهده می کنید
بخشی از کتاب جلسه سی و یکم - کلاس InputStreamReader را مشاهده می کنید
بخشی از کتاب جلسه سی و یکم - کلاس InputStreamReader را مشاهده می کنید
بخشی از کتاب جلسه سی و یکم - کلاس InputStreamReader را مشاهده می کنید
بخشی از کتاب جلسه سی و یکم - کلاس InputStreamReader را مشاهده می کنید
بخشی از کتاب جلسه سی و یکم - کلاس InputStreamReader را مشاهده می کنید
برچسب‌هاآموزش برنامه نویسی »آموزش زبان جاوا »آموزش جاوا »کلاس InputStreamReaderکاربرد InputStreamReaderمثال از InputStreamReaderآموزش InputStreamReaderآموزش جاواآموزش برنامه نویسی جاواکاربرد متد closeکاربرد FileInputStreamکاربرد InputStreamزبان جاوامتد close در جاوامتد read در جاوا
دسترسی سریع

فهرست مطلب

۱فهرست جلسات دوره مقدماتی جاوا۲مقدمه اول | جاوا چیست؟۳مقدمه دوم | تاریخچه جاوا۴مقدمه سوم | ویژگی‌های زبان جاوا۵جلسه اول | راهنمای دانلود و نصب JDK۶جلسه دوم | اجرای یک برنامه جاوا در Notepad۷جلسه سوم | راهنمای دانلود و نصب Eclipse۸جلسه چهارم | ساخت اولین برنامه جاوا در Eclipse۹جلسه پنجم | متغیر ها در جاوا۱۰جلسه ششم | تغییر فونت محیط Eclipse۱۱جلسه هفتم | عملگر‌های پایه ای جاوا۱۲جلسه هشتم | دستورات شرطی۱۳جلسه نهم | اشیا و کلاس ها۱۴جلسه دهم | ورودی گرفتن۱۵جلسه یازدهم | حلقه‌های کنترلی۱۶جلسه دوازدهم | کلمه کلیدی static۱۷جلسه سیزدهم | کلاس Math۱۸جلسه چهاردهم | کلاس String۱۹جلسه پانزدهم | آرایه‌های یک بعدی۲۰جلسه شانزدهم | کنترل سطح دسرسی (Modifiers)۲۱جلسه هفدهم | متدها در جاوا۲۲جلسه هجدهم | کلمه کلیدی this۲۳جلسه نوزدهم | کلاس‌های داخلی۲۴جلسه بیستم | ارث بری در جاوا۲۵جلسه بیست و یکم | کلمه کلیدی final۲۶جلسه بیست و دوم | Overriding در جاوا۲۷جلسه بیست و سوم | Polymorphism( چند ریختی)۲۸جلسه بیست و چهارم | چندریختی را بهتر یادبگیرید۲۹جلسه بیست و پنجم | Abstraction( انتزاع)۳۰جلسه بیست و ششم | Encapsulation(کپسوله سازی)۳۱جلسه بیست و هفتم | اینترفیس (Interface)۳۲جلسه بیست و هشتم | کلاس Random۳۳جلسه بیست و نهم | Exceptions (استثناها)۳۴جلسه سی ام | کار با فایل در جاوا(Files and I/O)۳۵جلسه سی و یکم | کلاس InputStreamReader۳۶جلسه سی و دوم | کلاس OutputStreamWriter۳۷جلسه سی و سوم | کلاس BufferedReader۳۸جلسه سی و چهارم | کلاس BufferedWriter۳۹جلسه سی و پنجم | Serialization در جاوا۴۰جلسه سی و ششم | چندنخی(Multithreading)۴۱جلسه سی و هفتم | آرایه دو بعدی در جاوا۴۲جلسه سی و هشتم | کلاس ArrayList در جاوا۴۳جلسه سی و نهم | Non Access Modifier در جاوا
ادامه مسیر

پیشنهاد جاواپرو

موضوع را با آموزش‌های مرتبط ادامه دهید و نکته‌های کاربردی را در مسیر خود نگه دارید

مشاهده دوره‌ها
مطالب پیشنهادی

ادامه مطالعه

xدسته‌بندی نشده
۱۱ دی ۱۳۹۸ مطالعه کوتاه

x

پادکست شماره 3 – راه های کسب درآمد از برنامه نویسی

مطالعه مطلب
پادکست شماره 3 - راه های کسب درآمد از برنامه نویسیپادکست
۲۹ اردیبهشت ۱۴۰۴ مطالعه کوتاه

پادکست شماره 3 - راه های کسب درآمد از برنامه نویسی

در این پادکست برنامه نویسی به شیوه ها و راه های کسب درآمد از برنامه نویسی پرداخته ایم. یک کاغذ و قلم بردارید و به پادکست گوش بدید.

مطالعه مطلب
پادکست شماره 2 - چگونه وارد فضای برنامه نویسی شویم؟پادکست
۲۹ اردیبهشت ۱۴۰۴ مطالعه کوتاه

پادکست شماره 2 - چگونه وارد فضای برنامه نویسی شویم؟

در این پادکست برنامه نویسی یاد میگیریم که چگونه وارد فضای برنامه نویسی شویم و تخصص برنامه نویسی را به دست آوریم.

مطالعه مطلب
جاواپرومرجع تخصصی یادگیری و توسعهٔ جاوا

تجربه‌ای منظم، ساده و حرفه‌ای برای یادگیری عمیق جاوا، Spring و مهندسی نرم‌افزار؛ قابل استفاده در موبایل، تبلت و دسکتاپ

یادگیری

همه دوره‌هاآموزش رایگانمسیر یادگیریمدرس‌ها

جاواپرو

درباره ماخدمات تخصصیدرخواست پروژهبلاگ فنی

پشتیبانی

تماس با ماپرسش‌های متداولقوانین و حریم خصوصیثبت تیکت
خرید امنپرداخت فقط در درگاه رسمیپشتیبانی آموزشیمسیر ارتباط شفاف و پیگیری‌پذیردسترسی پایداروب‌اپ واکنش‌گرا روی همه دستگاه‌ها
© ۱۴۰۵ جاواپرو؛ همه حقوق محفوظ استتوسعه توسط پایاپینگ
خانهدوره‌هاسبد