You can try something like this. I have modified your code slightly to place reading and writing inside the main loop. Also, I recommend having your streams inside a using block, it is simpler to write and safer if any exception is thrown. Note: This code is untested!!
public static void Download(String strURLFileandPath, String strFileSaveFileandPath)
{
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(strURLFileandPath);
HttpWebResponse ws = (HttpWebResponse)wr.GetResponse();
byte\[\] inBuf = new byte\[100000\];
int bytesToRead = (int)inBuf.Length;
int bytesRead;
using (Stream str = ws.GetResponseStream())
{
using (FileStream fstr = new FileStream(strFileSaveFileandPath, FileMode.OpenOrCreate, FileAccess.Write))
{
try
{
while ((bytesRead = str.Read(inBuf, 0, bytesToRead)) > 0)
{
fstr.Write(inBuf, 0, bytesRead);
}
}
catch (Exception e) {
MessageBox.Show(e.Message);
}
}
}
}