راهنمایی در مورد اضافه کردن قابلیت pause و resume دانلود در پروژه file downloader استاد
سلام از دوستان میخوام راهنمایی کنن که چطور میشه قابلیت توقف و دانلود دوباره رو به پروژه file downloader استاد که تو بخش پانزدهم توضیح داده شد اضافه کرد و اگه کسی اینکار رو کرده به ما هم یاد بده
با تشکر
برای اینکه قابلیت Pause و Resume رو به پروژه دانلودرتون اضافه کنید باید در ابتدا 2 فولدر داشته باشید :
فولدر Temp : محل نگهداری موقت فایل های ناقص دیا در حال دانلود .
فولدر Original : جایی که قراره فایل ها توش ذخیره بشه .
زمانی که فایلی رو دانلود میکنید داده ها در فایلی داخل فولدر Temp ذخیره میشه و زمانی که دانلود به اتمام برسه این فایل به پوشه Original منتقل میشه .
اگر قصد توقف دانلود رو دارید باید از طریق برقراری یک شرط دانلود رو متوقف کنید که با استفاده از یک boolean اینکار انجام میشه . این شرط باید داخل حلقه while نوشته بشه که داره دیتا رو میخونه .
حالا دانلود متوقف شده و مثلا فایل مورد نظر شما با حجم 500 کیلوبایت بوده و 300 کیلوبایت اون دانلود شده و این فایل داخل پوشه Temp قرار داره .
برای اینکه بتونید ادامه دانلود رو انجام بدید باید قبل از دستور دانلود فایل ، پوشه Temp رو چک کنید که آیا همچین فایلی قبلا گرفته شده به صورت نصفه یا نه .
اگر فایل در این فولدر باشه یعنی قبلا قصد دانلودش رو داشتید و ممکنه با خطا مواجه شده باشه یا خود شما دانلود رو متوقف کرده باشید .
حجم فعلی فایل رو به Byte بخونید و در header ، دستور دانلود به سرور بنویسید .
حالا جایی که دارید به فایلتون دسترسی پیدا میکنید یا همون OutputStream باید یک شرط بنویسید و بگید اگر از ادامه داشت دانلود میشید یک boolean به کانستراکتر OutputStream با مقدار true اضافه کن .
این مقدار true یعنی اینکه میخوای دیتا هایی که گرفته میشه به فایل قبلی بچسبه و فایل رو کامل کنه .
خلاصه توضیحاتی که گفتم بهمراه سورس در این لینک میتونید ببینید.
آقایه کاشی زاده منظورتون این تیکه کده؟
HttpURLConnection connection =(HttpURLConnection) url.openConnection();if(ISSUE_DOWNLOAD_STATUS.intValue()==ECMConstant.ECM_DOWNLOADING){File file=newFile(DESTINATION_PATH);if(file.exists()){
downloaded =(int) file.length();
connection.setRequestProperty("Range","bytes="+(file.length())+"-");}}else{
connection.setRequestProperty("Range","bytes="+ downloaded +"-");}
connection.setDoInput(true);
connection.setDoOutput(true);
progressBar.setMax(connection.getContentLength());
in =newBufferedInputStream(connection.getInputStream());
fos=(downloaded==0)?newFileOutputStream(DESTINATION_PATH):newFileOutputStream(DESTINATION_PATH,true);
bout =newBufferedOutputStream(fos,1024);byte[] data =newbyte[1024];int x =0;while((x = in.read(data,0,1024))>=0){
bout.write(data,0, x);
downloaded += x;
progressBar.setProgress(downloaded);}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .