2014-12-14 5 views
0

Я воспользовался следующим кодом для загрузки файла с веб-сайта. Но когда я перехожу в папку sdcard/download, файл не существует.Файл не существует в папке sdcard/download

if(et1.equals(example)){ 

       try { 
        //this is the file you want to download from the remote server 
        String path ="http://lifecraze.com/sercice_tax_faq.zip"; 
        //this is the name of the local file you will create 
        String targetFileName = "sercice_tax_faq.zip"; 
         boolean eof = false; 
        URL u = new URL(path); 
        HttpURLConnection c = (HttpURLConnection) u.openConnection(); 
        c.setRequestMethod("GET"); 
        c.setDoOutput(true); 
        c.connect(); 
        FileOutputStream f = new FileOutputStream(new File("sdcard/download/"+targetFileName)); 
         InputStream in = c.getInputStream(); 
         byte[] buffer = new byte[1024]; 
         int len1 = 0; 
         while ((len1 = in.read(buffer)) > 0) { 
         f.write(buffer,0, len1); 
           } 
        f.close(); 
        } catch (MalformedURLException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
        } catch (ProtocolException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
        } catch (FileNotFoundException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
        } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       Intent it=new Intent(Example.this,Sucess.class); 
       startActivity(it); 
      } 
      else{ 
       Intent it=new Intent(Example.this,Failed.class); 
       startActivity(it); 
      } 
     } 
    }); 

Пожалуйста, помогите мне, как получить файл в папке sdcard/download.

Заранее спасибо

+0

Это очень старый пост. Но на всякий случай, если кто-то сталкивается с той же проблемой. одна из возможных причин или наиболее распространенная причина, почему listFiles в приведенном выше коде ничего не возвращает, если у вас нет разрешения на чтение внешнего хранилища в файле манифеста. Я потратил много времени, не зная, что я делаю неправильно. Мысль может помочь кому-то. –

ответ

1

Вместо:

new File("sdcard/download/"+targetFileName));

Try:

new File("/sdcard/download", targetFileName));

Обратите внимание на слэш. Вы хотели абсолютного пути.

Но это лучше, потому что тогда мы не делаем предположений о том, где установлена ​​sdcard.

new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString(), targetFileName);

+0

Спасибо, но файл еще не находится в папке sdcard/download –

+0

@SanchitKalra, если ваш файл не создается, ваша строка 'FileOutputStream' не запускается. Взгляните на свой сетевой код и убедитесь, что он не блокирует навсегда. – MeetTitan

0

Я бы посоветовал использовать метод Environment.getExternalStorageDirectory().toString(), чтобы убедиться, что вы получаете правильный путь к смонтированному SD.

ваш:

FileOutputStream f = new FileOutputStream(new File("sdcard/download/"+targetFileName));

становится

FileOutputStream f = new FileOutputStream(new File(Environment.getExternalStorageDirectory().toString()+targetFileName));