Как загрузить XML-файл с сервера и сохранить его на SD-карте?

В моем приложении я пытаюсь загрузить XML-файл с сервера и сохранить его на SD-карте. Для этого я использую следующий код ..

try { File root = android.os.Environment.getExternalStorageDirectory(); File dir = new File (root.getAbsolutePath() + "/project"); if(dir.exists()==false) { dir.mkdirs(); } URL url = new URL("url"); //you can write here any link File file = new File(dir, name); long startTime = System.currentTimeMillis(); Log.d("DownloadManager", "download begining"); Log.d("DownloadManager", "download url:" + url); Log.d("DownloadManager", "downloaded file name:" + name); /* 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) { e.printStackTrace(); } 

Это дает мне java.net.SocketException: время ожидания операции отключено … Пожалуйста, помогите мне .. Я новичок в разработке android

Вы можете использовать следующий код. Это работает для меня

 URL url = new URL("some url"); //create the new connection HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //set up some things on the connection urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); //and connect! urlConnection.connect(); //set the path where we want to save the file //in this case, going to save it on the root directory of the //sd card. File SDCardRoot = new File("/sdcard/"+"Some Folder Name/"); //create a new file, specifying the path, and the filename //which we want to save the file as. File file = new File(SDCardRoot,"some file name"); //this will be used to write the downloaded data into the file we created FileOutputStream fileOutput = new FileOutputStream(file); //this will be used in reading the data from the internet InputStream inputStream = urlConnection.getInputStream(); //this is the total size of the file int totalSize = urlConnection.getContentLength(); //variable to store total downloaded bytes int downloadedSize = 0; //create a buffer... byte[] buffer = new byte[1024]; int bufferLength = 0; //used to store a temporary size of the buffer //now, read through the input buffer and write the contents to the file while ( (bufferLength = inputStream.read(buffer)) > 0 ) { //add the data in the buffer to the file in the file output stream (the file on the sd card fileOutput.write(buffer, 0, bufferLength); //add up the size so we know how much is downloaded downloadedSize += bufferLength; int progress=(int)(downloadedSize*100/totalSize); //this is where you would do something to report the prgress, like this maybe //updateProgress(downloadedSize, totalSize); } //close the output stream when done fileOutput.close(); 
 public void DownloadFiles(){ try { URL url = new URL("http://nodeload.github.com/nexes/Android-File-Manager/zipball/master"); URLConnection conexion = url.openConnection(); conexion.connect(); int lenghtOfFile = conexion.getContentLength(); InputStream is = url.openStream(); File testDirectory = new File(Environment.getExternalStorageDirectory() + "/Folder"); if (!testDirectory.exists()) { testDirectory.mkdir(); } FileOutputStream fos = new FileOutputStream(testDirectory + "/zip.zip"); byte data[] = new byte[1024]; int count = 0; long total = 0; int progress = 0; while ((count = is.read(data)) != -1) { total += count; int progress_temp = (int) total * 100 / lenghtOfFile; if (progress_temp % 10 == 0 && progress != progress_temp) { progress = progress_temp; } fos.write(data, 0, count); } is.close(); fos.close(); } catch (MalformedURLException 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(); } }