جریان های I/O (I/O Streams)
اینجا درباره «جریان های I/O جاوا» حرف می زنیم. «جریان (Stream)» لوله داده است. داده می تواند متن یا باینری باشد. کلاس «File» فقط درباره فایل ها اطلاعات می دهد. اما جریان ها خود محتوا را می خوانند یا می نویسند.
تفاوت File و جریان های I/O
کلاس «File» می گوید فایل هست یا نه. همچنین نام، اندازه، و مسیر را می دهد. حتی می تواند بسازد یا حذف کند. اما محتوا را نمی خواند و نمی نویسد.
برای محتوا از جریان ها استفاده کن. مانند «Scanner» و «FileWriter» برای متن ساده. همچنین جریان ها برای متن و باینری کاربرد دارند.
انواع جریان ها
Byte Streams؛ مخصوص داده باینری
«باینری (Binary)» یعنی داده خام مانند تصویر و صدا. برای این ها از جریان های بایتی استفاده کن. نمونه ها: FileInputStream و FileOutputStream.
Character Streams؛ مخصوص متن
«نویسه (Character)» یعنی حرف های متن. این جریان ها کدگذاری متن را مدیریت می کنند. نمونه ها: FileReader، FileWriter، BufferedReader و BufferedWriter.
نکته: متن = جریان کاراکتری. باینری = جریان بایتی. همین ساده.
چه زمانی کدام را انتخاب کنیم؟
برای دفتر مشق فکر کن. متن نیاز به خواندن کلمه ها دارد. پس جریان کاراکتری بهتر است. اما عکس دفتر اسکن شده باینری است. پس جریان بایتی مناسب است.
اگر فقط می خواهی وجود فایل را چک کنی، از «File» کمک بگیر. اما برای نوشتن متن، «FileWriter» راحت تر است. برای خواندن متن، «Scanner» یا «BufferedReader» عالی اند.
سه گام تمرینی ساده
- هدف را مشخص کن؛ متن است یا باینری؟
- نوع جریان مناسب را انتخاب کن.
- اگر با فایل کار می کنی، اول مسیر را با «File» بساز.
نکته: برای بستن خودکار منبع، از try-with-resources کمک بگیر.
هشدار: انتخاب جریان اشتباه باعث به هم ریختگی داده می شود. متن را با بایتی قاطی نکن.
پیش نیازها و ادامه مسیر: مرور کلی فایل ها در کار با فایل، نوشتن متن در نوشتن فایل، و خواندن متن در خواندن فایل.
جمع بندی سریع
- File برای اطلاعات، نه محتوا.
- متن = Character Streams.
- باینری = Byte Streams.
- بستن منبع را فراموش نکن.