1

I want to calculate downloading time in my ftp download manager.

I am using these code to download file through ftp.

        try
        {
            string DirectoryCreate = localPath;
            if (!Directory.Exists(DirectoryCreate))
            {
                Directory.CreateDirectory(DirectoryCreate);
            }
            FtpWebRequest requestFileDownload = (FtpWebRequest)WebRequest.Create("ftp://xxxxxx.com);
            requestFileDownload.Method = WebRequestMethods.Ftp.DownloadFile;

            FtpWebResponse responseFileDownload = (FtpWebResponse)requestFileDownload.GetResponse();
            Stream responseStream = responseFileDownload.GetResponseStream();
            FileStream writeStream = new FileStream(localPath + "\\" + fileName, FileMode.Create);
            int Length = 2048;
            Byte[] buffer = new Byte[Length];
            int bytesRead = responseStream.Read(buffer, 0, Length);
            while (bytesRead > 0)
            {
                writeStream.Write(buffer, 0, bytesRead);
                bytesRead = responseStream.Read(buffer, 0, Length);
            }
            responseStream.Close();
            writeStream.Close();
            requestFileDownload = null;
            responseFileDownload = null;
        }
        catch(WebException ex)
        {

        }

Can anyone please say me what i should change in my code for calculating download time.

There would be great appreciation if someone could help me.

Yahel
  • 37,023
  • 22
  • 103
  • 153
Sharrok G
  • 447
  • 3
  • 13
  • 27
  • 1
    Do you want to return how long it took at the end? Or do you want to give some kind of running total to the user to estimate how long is left? – Ben Robinson Nov 27 '11 at 13:15
  • Related, but w/o a concrete answer: http://stackoverflow.com/q/798800/60761 – H H Nov 27 '11 at 13:24

2 Answers2

3
DateTime t1 =  DateTime.Now;
while (bytesRead > 0)
{
    writeStream.Write(buffer, 0, bytesRead);
    bytesRead = responseStream.Read(buffer, 0, Length);
}
DateTime t2 = DateTime.Now;
TimeSpan diff = t2 - t1;//you can return diff or display it using its properties ..
unloco
  • 6,928
  • 2
  • 47
  • 58
2
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
int bytesRead = responseStream.Read(buffer, 0, Length);
            while (bytesRead > 0)
            {
                writeStream.Write(buffer, 0, bytesRead);
                bytesRead = responseStream.Read(buffer, 0, Length);
            }
            responseStream.Close();
            writeStream.Close();
            requestFileDownload = null;
            responseFileDownload = null;

        }
        catch(WebException ex)
        {

        }

stopwatch.Stop();
stopwatch.Elapsed // this will give you the elapsed time
Rohit Sharma
  • 6,136
  • 3
  • 28
  • 47