Cómo guardar el archivo del sitio web en sdcard

¿Alguien sabe cómo guardar un archivo de un servidor web (host local) a la tarjeta SD a través de wifi?

Estoy haciendo un análisis XML para mi aplicación y para eso tengo que descargar un archivo xml de localhost a la tarjeta sd y luego etiquetar el análisis. Estoy atascado con la descarga de un archivo xml a la tarjeta SD. Por favor, guíame sobre cómo hacer esto ..

Puede usar este método para descargar un archivo de Internet a su tarjeta SD:

public void DownloadFromUrl(String DownloadUrl, String fileName) { try { File root = android.os.Environment.getExternalStorageDirectory(); File dir = new File (root.getAbsolutePath() + "/xmls"); if(dir.exists()==false) { dir.mkdirs(); } URL url = new URL(DownloadUrl); //you can write here any link File file = new File(dir, fileName); long startTime = System.currentTimeMillis(); Log.d("DownloadManager", "download begining"); Log.d("DownloadManager", "download url:" + url); Log.d("DownloadManager", "downloaded file name:" + fileName); /* Open a connection to that URL. */ URLConnection ucon = url.openConnection(); /* * Define InputStreams to read from the URLConnection. */ InputStream is = ucon.getInputStream(); BufferedInputStream bis = new BufferedInputStream(is); /* * Read bytes to the Buffer until there is nothing more to read(-1). */ ByteArrayBuffer baf = new ByteArrayBuffer(5000); int current = 0; while ((current = bis.read()) != -1) { baf.append((byte) current); } /* Convert the Bytes read to a String. */ FileOutputStream fos = new FileOutputStream(file); fos.write(baf.toByteArray()); fos.flush(); fos.close(); Log.d("DownloadManager", "download ready in" + ((System.currentTimeMillis() - startTime) / 1000) + " sec"); } catch (IOException e) { Log.d("DownloadManager", "Error: " + e); } } 

Debe agregar los siguientes permisos a su AndroidManifest.xml:

     

La respuesta de Sourav está bien, pero para archivos de gran tamaño debes implementarla en un nuevo hilo; porque durante la descarga, el hilo principal está ocupado para descargar el archivo. Si el tiempo de espera es más de lo esperado, el sistema generará el error “No responde”.

Para hacer eso puedes usar ” TaskAsync ” o ” IntentService ”

Prefiero construir un servidor de soap y hacer una llamada desde la aplicación al servidor y recibir XML. O tal vez podrías crear una URL que genere XML y que simplemente analice la URL directamente.

Intenta leer más en este LINK

Espero haber respondido la pregunta. De lo contrario, estaría encantado de ayudar, pero necesito una descripción más detallada de la funcionalidad.