بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

راهنمایی در مورد اضافه کردن قابلیت pause و resume دانلود در پروژه file downloader استاد

مدیریت گفتگو
mortex 11 سال پیش
آخرین تغییر: 10 سال پیش

سلام از دوستان میخوام راهنمایی کنن که چطور میشه قابلیت توقف و دانلود دوباره رو به پروژه file downloader استاد که تو بخش پانزدهم توضیح داده شد اضافه کرد و اگه کسی اینکار رو کرده به ما هم یاد بده

با تشکر

نظرات

mortex 11 سال پیش
اگه کسی منبع خاصی هم در این زمینه میدونه بگه
omidronaldoo 11 سال پیش
منم دنبالشم همه چیز یک دانلودر خوب بهش اضافه کردم الا این دو مورد اگه به جایی رسیدی حتما بزار اینجا
Criss 11 سال پیش
من توی این مورد اعلام آمادگی میکنم ، هر موردی رو پیدا کردم اینجا میزارم < بهتره در مورد اینکه وسط کار اینترنت به مشکل بر بخوره و دانلود ما نقص پیدا نکنه هم کار بشه <
Farshad 10 سال پیش
داخل این سایت یک نمونه هست ولی خاطرم نیست قابلیت پاز و ریزوم داشت یا نه به هر حال امیدوارم کمکتون کنه لینک

پاسخ‌ها 2

کاشی زاده 11 سال پیش

برای اینکه قابلیت Pause و Resume رو به پروژه دانلودرتون اضافه کنید باید در ابتدا 2 فولدر داشته باشید :

فولدر Temp : محل نگهداری موقت فایل های ناقص دیا در حال دانلود .

فولدر Original : جایی که قراره فایل ها توش ذخیره بشه .

زمانی که فایلی رو دانلود میکنید داده ها در فایلی داخل فولدر Temp ذخیره میشه و زمانی که دانلود به اتمام برسه این فایل به پوشه  Original منتقل میشه .

اگر قصد توقف دانلود رو دارید باید از طریق برقراری یک شرط دانلود رو متوقف کنید که با استفاده از یک boolean اینکار انجام میشه . این شرط باید داخل حلقه while نوشته بشه که داره دیتا رو میخونه .

حالا دانلود متوقف شده و مثلا فایل مورد نظر شما با حجم 500 کیلوبایت بوده و 300 کیلوبایت اون دانلود شده و این فایل داخل پوشه Temp قرار داره .

برای اینکه بتونید ادامه دانلود رو انجام بدید باید قبل از دستور دانلود فایل ، پوشه Temp رو چک کنید که آیا همچین فایلی قبلا گرفته شده به صورت نصفه یا نه .

اگر فایل در این فولدر باشه یعنی قبلا قصد دانلودش رو داشتید و ممکنه با خطا مواجه شده باشه یا خود شما دانلود رو متوقف کرده باشید .

حجم فعلی فایل رو به Byte بخونید و در  header ، دستور دانلود به سرور بنویسید .

حالا جایی که دارید به فایلتون دسترسی پیدا میکنید یا همون OutputStream باید یک شرط بنویسید و بگید اگر از ادامه داشت دانلود میشید یک boolean به کانستراکتر OutputStream با مقدار true اضافه کن .

این مقدار true یعنی اینکه میخوای دیتا هایی که گرفته میشه به فایل قبلی بچسبه و فایل رو کامل کنه .

 

خلاصه توضیحاتی که گفتم بهمراه سورس در این لینک میتونید ببینید.

 

نظرات

omidronaldoo 11 سال پیش
اینجاشو نفهمیدم: حجم فعلی فایل رو به Byte بخونید و در header ، دستور دانلود به سرور بنویسید . حالا جایی که دارید به فایلتون دسترسی پیدا میکنید یا همون OutputStream باید یک شرط بنویسید و بگید اگر از ادامه داشت دانلود میشید یک boolean به کانستراکتر OutputStream با مقدار true اضافه کن . میشه کد بزارین
mortex 11 سال پیش
محمد حسین جان ممنون ، خیلی خوب بود. من سعی میکنم بر اساس این آموزش اینکار رو انجام بدم و نتیجه اش رو اطلاع میدم. دوستان دیگه هم اگه پروژه file downloader استاد رو کامل کردن لطفا آموزشش رو بدن
کاشی زاده 11 سال پیش
سورس در لینک قرار داره میتونید برید داخلش و بخونیدش
omidronaldoo 11 سال پیش

آقایه کاشی زاده منظورتون این تیکه کده؟

 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);}

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .