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

قابلیت توقف و ادامه در الگوریتم دانلود

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

سلام ، کد زیر کد استاده که برای دانلود آموزش دادن:

 public FileDownloader download(){
		try {
			
			HttpURLConnection connection = pageConnector(link);
			
			int fileSize = connection.getContentLength();
			FileOutputStream outputStream = new FileOutputStream(savePath);
			
			InputStream stream = connection.getInputStream();
			byte[] buffer = new byte[8*1024];
			int len = 0;
			int downloadedSize = 0;
			while((len = stream.read(buffer)) >0){
				outputStream.write(buffer, 0 , len);
				downloadedSize += len;
				final int percent = (downloadedSize*100)/fileSize;
				if(thisListener != null){
					G.HANDLER.post(new Runnable() {
						
						@Override
						public void run() {
							thisListener.onDownloadListener(percent);
						}
					});
				}
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		return this;
	}

که خوب اگه دانلود متوقف بشه عملاً با این کد نمیشه دانلود رو ادامه داد. حالا چیکار کنم تا بعد از توقف بشه دانلود رو ادامه داد؟

 

نظرات

Hamedmtn 10 سال پیش
مرسی ، مفید بود

پاسخ‌ها 1

MOJTABA 10 سال پیش

یادمه استاد گفتن برای اینکه قابلیت Resume رو به فایل خروجیمون بدیم باید این کد را بزنیم

 FileOutputStream outputStream =newFileOutputStream(savePath,True);

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

اگه دقت کنید حلقه for میشینه از اول دانلود میکنه.

چیزی که تو ذهن منه اینه که for رو که نمیتونیم کارش کنیم (شاید هم بشه کارش کرد ولی من نمیدونم) ولی میتونیم یه شرط بذاریم که اگه حجم دانلود شده بیشتر از  حجم فایل قبلا دانلود شده بود اون موقع به فایلمون بایت ها رو اضافه کن.

مشکل الگوریتم بالا اینه که استاندارد نیست و خیلی راحت هم میشه فهمید :)

نظرات

MOJTABA 10 سال پیش
لینک بالا رو ندیده بودم :/

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