کوچک تر شدن فایل بعد از کپی با استفاده از apache IO و CopyUtils

کوچک تر شدن فایل بعد از کپی با استفاده از apache IO و CopyUtils.

کوچک تر شدن فایل بعد از کپی با استفاده از apache IO و CopyUtils

 

وقتی سعی داشتم با ابزار کپی کتاب خونه 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 استفاده کنیم.

 

لینک های مرتبط به مطلب:

Commons IO (+).

مطالب غیر مرتبط:

ویرایش و ایجاد فایل های مایکروسافت آفیس (ورد-اکسل-پاروپوینت) در جاوا (+).

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

This site uses Akismet to reduce spam. Learn how your comment data is processed.