آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

Hamedmtn  10 سال پیش  10 سال پیش
0 0

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

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

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

 

+2 0
به این لینک یه سری بزن لینک (10 سال پیش)
0 0
مرسی ، مفید بود (10 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
MOJTABA  10 سال پیش
+1 0

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

 FileOutputStream outputStream =newFileOutputStream(savePath,True);

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

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

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

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

+1 0
کاملا موافقم همین تو ذهنم بود :) (10 سال پیش)
0 0
لینک بالا رو ندیده بودم :/ (10 سال پیش)
0 0
:دی (10 سال پیش)

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