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

后端 未结 2 542
既然无缘
既然无缘 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: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();
    

提交回复
热议问题