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

مشکل با پروژه downloader

120578  9 سال پیش  9 سال پیش
0 0

سلام و عرض خسته نباشید خدمت تمامی دوستان

در این پروژه بنده تمام کدها رو شبیه به پروژه استاد نوشتم . تمام permisionها رو در manifest ست کردم هم internet و هم نوشتن درsd card و همچنین مطمئن هستم که لینک هم درسته و همچنین هر دو طرف هم پسوندش png هست سوالی که دارم این هستش که فایل رو داخلsdcard ایجاد میکنه و بدون خطا هم اجرا میشه اما فایل sample-image.png رو ایجاد نمیکنه  و exception میده (java.io.FileNotFoundException)می خواستم بدونم دلیلش چیه؟

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

connection.setDoOutput(true)
 

و همچنین یکی از دوستان دیگه هم گفته بودند که برای ارسال درخواست از tread با استفاده از کلاس AsyncTask استفاده کنید که اونم باز مشکل رو حل نکرد.

اگر از دوستان راه حلی داره بگه ممنون میشم

0 0
این خطایی ک شما دریافت کردید مربوط به اینه ک نتوسته فایل مورد نظر شما رو شناسایی کنه . احتمالا در ادرس دهی اشتباه کردید. (9 سال پیش)
0 0
آدرس ها هم درسته تو مرورگر که آدرسها رو میزنم عکسها رو لود میکنه (9 سال پیش)
0 0
میشه ادرس ک به آندروید دادید رو ببینم؟ اینجوری نمیتونم از غیب چیزی بگم !!! (9 سال پیش)
0 0
کل کدها رو در زیر نوشتم دوست عزیز. دقیقا شبیه به کدهای استاده. ولی نمیدونم خطاش کجاست (9 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
120578  9 سال پیش
0 0

یعنی کسی جواب این سوال رو نمیدونه. لطفا اگر کسی نظری داره بگه

پاسخ به سوال 
120578  9 سال پیش
0 0

کدهای به صورت زیره لطفا بگید مشکل از کجاست

کدهای مربوط به کلاس G

public class G extends Application {
public static Context context;
public static final String DIR_SDCRD= Environment.getExternalStorageDirectory().getAbsolutePath();
public static final String DIR_APP=DIR_SDCRD+"/file-downloader";
public static final int DOWNLOAD_BUFFER_SIZE=8*1024;
public static final Handler HANDLER=new Handler();

@Override
public void onCreate() {
super.onCreate();
new File(DIR_APP).mkdirs();
context=getApplicationContext();
}
}

کدهای مربوط به کلاس Filedownloader

public class FileDownloader {
public static void download(final String downloadPath, final String filePath, final OnProgressDownloadListener listener){

Thread thread =new Thread(new Runnable() {
@Override
public void run() {

try {
URL url=new URL(downloadPath);
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.connect();

final int filesize=connection.getContentLength();

File file=new File(filePath);
if(file.exists()){
file.delete();
}
FileOutputStream outputStream=new FileOutputStream(filePath);

InputStream inputStream=connection.getInputStream();
byte[] buffer=new byte[G.DOWNLOAD_BUFFER_SIZE];
int len=0;
int downloadSize=0;
while((len=inputStream.read(buffer))>0){
outputStream.write(buffer,0,len);
downloadSize+=len;
final int finaldownloadSize=downloadSize;
final float downloadPercent=(float) downloadSize/filesize;
Log.i("Log","downloadsize="+downloadSize+", filesize="+filesize+",percent="+downloadPercent);

if (listener!=null){
G.HANDLER.post(new Runnable() {
@Override
public void run() {
listener.OnProgressDownload((int) downloadPercent , finaldownloadSize , filesize);
}
});
}
}
outputStream.close();

} catch (MalformedURLException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();

}
}

کدهای مربوط به کلاس Main

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button btnDownload=(Button) findViewById(R.id.btnDownload);
final TextView txtDownload=(TextView) findViewById(R.id.txtDownload);
final ProgressBar prgDownload=(ProgressBar) findViewById(R.id.prgDownload);

btnDownload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
OnProgressDownloadListener listener=new OnProgressDownloadListener() {

private String convertByteToMB(int byteLength){
float sizeInKB=(float) byteLength/1024;
float sizeInMb=(float) sizeInKB/1024;
return String.format("%.1fMB",sizeInMb);
}
@Override
public void OnProgressDownload(int percent, int downloadSize, int fileSize) {
prgDownload.setProgress(percent);
txtDownload.setText(percent+"%"+convertByteToMB(downloadSize)+"/"+convertByteToMB(fileSize));
//Log.i("Log",""+percent);

}
};

FileDownloader.download("http:/192.168.1.105/file-server/image-4.png", G.DIR_APP + "/sample-image.png" , listener);

}
});

}
}

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