یاداشت های کوتاه یک برنامه نویس

طبقه بندی موضوعی

۴ مطلب با موضوع «java :: java IO» ثبت شده است

۲۲
خرداد

وقتی سعی داشتم با ابزار کپی کتاب خونه Apache IO فایلی رو از جایی به جای دیگه کپی کنم متوجه شدم فایل مقصد با فایل منبع مطابقت نداره و کمی کوچکترشده است (در حد چند ده کیلوبایت).

  • اولا باید در نظر داشته باشید که بر طبق امضای این متد باید آرگمان ها از نوع  InputStream  و OutputStream  باشند:
CopyUtils.copy(InputStream input ,OutputStream output);
  • دوما باید به سلسله مراتب کلاس های ارث برده از in/outputStream توجه کنید. در حالی که کلاس FileInputStream کلاس InputStream رو گسترش داده و در ضمن BufferedInputStream کلاس FilterInputStream گسترش میده و کلاس FilterInputStream کلاس InputStream گسترش میده پس :
FileInputStream instanceof InputStream  = true
BufferedInputStream instanceof InputStream  = true

و با توجه به تفاوت هایی که در پیاده سازی متد های read() و write() در کلاس های bufferedInputStream و FileInputStream وجود داره اگر یک نمونه از کلاس bufferedInputStream رو به عنوان آرگومان ورودی به متد Copy بدهیم فایل مقصد از فایل منبع کوچک تر خواهد شد. پس در این حالت بهتره از FileInputStream استفاده کنیم. 

  • younes RayanFar
۲۶
تیر

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

  • younes RayanFar
۲۶
تیر

همون طور که میدونید مجوز دسترسی به فایل ها توسط سیستم عامل و سیستم فایل تعریف میشوند. NTFS FAT FAT32 و سیستم فایل در یونیکس و لینوکس در این ضمینه با هم تفاوت هایی دارند.

  • younes RayanFar
۲۶
تیر

برای کار با فایل در جاوا از یک نمونه از کلاس File استفاده میشود. میتونیم توش بنویسیم و ازش بخونیم اما تا وقتی متد createNewFile را فراخوانی نکنیم هیچ فایلی واقع رو دیسک سخت ایجاد نمیشه! در واقع هر کاری کردیم روی رم بوده.

  • younes RayanFar