How to download XML file from server and save it in SD card?

后端 未结 2 533
既然无缘
既然无缘 2020-11-30 12:19

In my application i\'m trying to download XML file from server and storing it in SD card.For this i\'m using following code..

        try {
               Fi         


        
相关标签:
2条回答
  • 2020-11-30 12:38
    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();
        }
    }
    
    0 讨论(0)
  • 2020-11-30 12:40

    You can use Following code. This works for me

    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();
    
    0 讨论(0)
提交回复
热议问题