Descargué 3 archivos (2 archivos zip 1 txt) de http://download.geonames.org/export/ dump / use WebClient y uno de los archivos zip que tienen un tamaño de 9 Mb, cuando lo descargo tiene un tamaño de 215 Mb y está dañado ... Intento usar la clase WebRequest y FileStream pero nuevamente tengo el mismo resultado ...

Mis métodos para la descarga alternativa de WebClient:

private void MyDownloadFile(Uri url, string outputFilePath)
        {
            const int BUFFER_SIZE = 16 * 1024;
            using (var outputFileStream = File.Create(outputFilePath, BUFFER_SIZE))
            {
                var req = WebRequest.Create(url);
                using (var response = req.GetResponse())
                {
                    using (var responseStream = response.GetResponseStream())
                    {
                        var buffer = new byte[BUFFER_SIZE];
                        int bytesRead;
                        do
                        {
                            bytesRead = responseStream.Read(buffer, 0, BUFFER_SIZE);
                            outputFileStream.Write(buffer, 0, bytesRead);
                        } while (bytesRead > 0);
                    }
                }
            }
        }

private void DownloadFile(String Url, String ResultFileName)
        {
            HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create(Url);
            HttpWebResponse ws = (HttpWebResponse)wr.GetResponse();
            Stream str = ws.GetResponseStream();

            byte[] inBuf = new byte[100000];
            int bytesReadTotal = 0;

            FileStream fstr = new FileStream(ResultFileName, FileMode.Create, FileAccess.Write);

            while (true)
            {
                int n = str.Read(inBuf, 0, 100000);
                if ((n == 0) || (n == -1))
                {
                    break;
                }

                fstr.Write(inBuf, 0, n);

                bytesReadTotal += n;
            }

            str.Close();
            fstr.Close();
        }

URL del archivo que se corrompe durante la descarga: http://download.geonames.org/export/dump/ allCountries.zip

¿Alguien, tiene el mismo problema o puede escribir el método para cargar correctamente este archivo zip? ¿O tal vez hice algo mal?

1
Alexey Z. 24 nov. 2011 a las 21:06
Mirando download.geonames.org/export/dump, allCountries.zip debería ser de unos 208M, no de 9M. ¿Está seguro de que está descargando el archivo correcto?
 – 
Jon Skeet
24 nov. 2011 a las 21:30

1 respuesta

La mejor respuesta

¿Qué tal si se usa el método WebClient.DownloadFile (WebClient.DownloadFile)

using (var wc = new WebClient())
{
  wc.DownloadFile(Url, ResultFileName);
}
2
Simon 24 nov. 2011 a las 21:18