2015-02-16 5 views
0

Я создал приложение для Android, чтобы загрузить изображение и сохранить его во внешнем каталоге, но приложение загружает файл и сохраняет его во внутреннем каталоге. это мой кодКак сохранить загруженные файлы во внешнее хранилище

protected String doInBackground(String... aurl) { 
     int count; 

     try { 

      File root = Environment.getExternalStorageDirectory(); 
      File dir = new File(root.getAbsolutePath() + "/storage/extSdCard/prateek"); 
      if(dir.exists() == false){ 
       dir.mkdirs(); 
      } 

      URL url = new URL(aurl[0]); 
      URLConnection conexion = url.openConnection(); 
      conexion.connect(); 

      int lenghtOfFile = conexion.getContentLength(); 
      Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile); 

      InputStream input = new BufferedInputStream(url.openStream()); 

      // File SDCardRoot = Environment.getExternalStorageDirectory(); 
      //create a new file, to save the downloaded file 
      File file = new File(dir,"downloaded_file.png"); 

      OutputStream output = new FileOutputStream(file); 

      byte data[] = new byte[1024]; 

      long total = 0; 

      while ((count = input.read(data)) != -1) { 
       total += count; 
       publishProgress("" + (int) ((total * 100)/lenghtOfFile)); 
       output.write(data, 0, count); 
      } 

      output.flush(); 
      output.close(); 
      input.close(); 
     } catch (Exception e) { 
     } 
     return null; 

    } 

ответ

0

использование этого -

String exStoragePath = Environment.getExternalStorageDirectory().getAbsolutePath(); 
 
File dir = new File(exStoragePath + "/prateek/");

включают также <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> в манифесте.

0

Вот несколько кодов для создания файла и записи «Hello world» в нем. Этот файл будет сохранен в каталоге/myDir.

Вы должны добавить

< использует разрешение-андроид: имя = "android.permission.WRITE_EXTERNAL_STORAGE" />

в манифесте для этой работы.

try { 
     String root = Environment.getExternalStorageDirectory().toString(); 
     File myDir = new File(root + "/myDir");  
     myDir.mkdirs(); 
     File outFile = new File (myDir, "myFile"); 
     FileWriter fileWriter = new FileWriter(outFile); 
     BufferedWriter out = new BufferedWriter(fileWriter); 
     out.write("Hello world"); 
     out.close(); 
     Toast.makeText(this, "File successfully created to "+outFile.getAbsolutePath(), Toast.LENGTH_SHORT).show(); 
    } catch (IOException e) { 
     Log.d("debug", "IOException: " + e.getMessage()); 
     Toast.makeText(this, "Error: file NOT created", Toast.LENGTH_SHORT).show(); 
    } 

Удачи.

0
File root = Environment.getExternalStorageDirectory(); 
      File dir = new File(root.getAbsolutePath() + "/storage/extSdCard/prateek"); 

Если я прав код выше ваш даст вам путь, как «мнт/SDCARD/хранение/extSdCard/Prateek» поэтому вместо использования root.getAbsolutePath() непосредственно дают путь «/ хранение/extSdCard/prateek "и Его также не очень хорошая практика для хранения на внешней карте, так как в версии kitkat и некоторых других телефонах он не будет предоставлять внешнюю карту, он будет считать внутреннюю память как extsdcard

+0

приведенный выше код дает мне путь как: /storage/emulated/0/prateek/download_file.png " –

+0

PLS проверит журнал и скажет путь к файлу File = new File (dir," loaded_file.png "); file.getAbsolutePath(); –

Смежные вопросы