بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
قابلیت توقف و ادامه در الگوریتم دانلود
سلام ، کد زیر کد استاده که برای دانلود آموزش دادن:
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 رو که نمیتونیم کارش کنیم (شاید هم بشه کارش کرد ولی من نمیدونم) ولی میتونیم یه شرط بذاریم که اگه حجم دانلود شده بیشتر از حجم فایل قبلا دانلود شده بود اون موقع به فایلمون بایت ها رو اضافه کن.
مشکل الگوریتم بالا اینه که استاندارد نیست و خیلی راحت هم میشه فهمید :)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .