Android: Cómo descargar el archivo desde el servidor y guardarlo en una carpeta específica en sdcard

Tengo un requisito en mi aplicación de Android. Necesito descargar y guardar el archivo en la carpeta específica de sdcard Programáticamente. He desarrollado código fuente ..

Y mi código es

String DownloadUrl = "http://myexample.com/android/"; String fileName = "myclock_db.db"; DownloadDatabase(DownloadUrl,fileName); // and the method is public void DownloadDatabase(String DownloadUrl, String fileName) { try { File root = android.os.Environment.getExternalStorageDirectory(); File dir = new File(root.getAbsolutePath() + "/myclock/databases"); if(dir.exists() == false){ dir.mkdirs(); } URL url = new URL("http://myexample.com/android/"); File file = new File(dir,fileName); long startTime = System.currentTimeMillis(); Log.d("DownloadManager" , "download url:" +url); Log.d("DownloadManager" , "download file name:" + fileName); URLConnection uconn = url.openConnection(); uconn.setReadTimeout(TIMEOUT_CONNECTION); uconn.setConnectTimeout(TIMEOUT_SOCKET); InputStream is = uconn.getInputStream(); BufferedInputStream bufferinstream = new BufferedInputStream(is); ByteArrayBuffer baf = new ByteArrayBuffer(5000); int current = 0; while((current = bufferinstream.read()) != -1){ baf.append((byte) current); } FileOutputStream fos = new FileOutputStream( file); fos.write(baf.toByteArray()); fos.flush(); fos.close(); Log.d("DownloadManager" , "download ready in" + ((System.currentTimeMillis() - startTime)/1000) + "sec"); int dotindex = fileName.lastIndexOf('.'); if(dotindex>=0){ fileName = fileName.substring(0,dotindex); } catch(IOException e) { Log.d("DownloadManager" , "Error:" + e); } } 

Ahora El problema es sólo un archivo vacío con el nombre de archivo myclock_db.db está guardando en la ruta. Pero necesito descargar y guardar el contenido del archivo en la carpeta específica. Intentó varias maneras de conseguir la transferencia directa del archivo, pero no puedo. ¿Puede alguien ayudarme a resolver el problema …

Gracias por adelantado…

La URL de descarga no es un enlace a ningún archivo. Es un directorio. Asegúrese de que su un archivo y existe. También compruebe su logcat ventana de registros de errores. Una sugerencia más, siempre es mejor hacer un printStackTrace () en bloqueos de captura en lugar de registros. Su da una vista más detallada del error.

Cambiar esta línea:

  URL url = new URL("http://myexample.com/android/"); 

a:

  URL url = new URL("http://myexample.com/android/yourfilename.txt"); //some file url 

A continuación, en el bloque catch, agregue esta línea:

 e.printStackTrace(); 

También en la ruta del directorio, debe ser algo como esto:

 File dir = new File(root.getAbsolutePath() + "/mnt/sdcard/myclock/databases"); 

en lugar de

 File dir = new File(root.getAbsolutePath() + "/myclock/databases"); 

A continuación, asegúrese de que ha adquirido permiso para escribir en el almacenamiento externo en el manifiesto de Android.

  • ¿Cómo puedo saber si el selector de métodos de entrada está abierto o cerrado?
  • InputConnection.commitText (texto CharSequence, int newCursorPosition) sólo puede confirmar caracteres y números en inglés?
  • Deshabilitar la vista de edición de pantalla completa para la entrada de teclado suave en el paisaje, desde la perspectiva del usuario?
  • ¿Cómo mostrar el teclado virtual perfectamente en fragmento en Android?
  • ¿Cómo determinar el IME actual en Android?
  • La aplicación de Android no se actualiza después de ocultar el teclado virtual
  • Android muestra teclado suave cuando el fragmento onResume
  • Cómo deshabilitar "métodos de entrada" en SoftKeyBoard?
  • Ocultar entrada suave cuando se desplaza la lista
  • Android: IME sin teclado
  • Activar y controlar el cursor del ratón en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.