finnally got the soultion, binary reader works yepeeee..
thanks all who helped.

here is the code, I think the way i used to read from stream and write is crap, if any one knows better then please tell me...as readStream is memory stream i canot perform any kind of seek operation on it.

i done it like that
BinaryReader br = new BinaryReader(readStream);
BinaryWriter bw = new BinaryWriter(System.IO.File.Open(FileNameWithPath, FileMode.Create), Encoding.UTF8);
byte[] buff = new byte[1024];
int c=1;
while(c > 0 )
{
c = br.Read(buff, 0, 1024);
for(int i=0;i<c;i++)
bw.Write(buff[i]);

}

bw.Close();






here is complete code might help someone else.

FtpWebRequest FTPRequest;
HttpWebRequest HTTPRequest;
WebResponse FTPwebResponse;
HttpWebResponse HTTPwebResponse = null;
Stream readStream = new MemoryStream();
Encoding Enc;
StreamReader reader;
string responce;
Uri uri = new Uri(url);
if (url.Contains("ftp"))
{
FTPRequest = (FtpWebRequest)WebRequest.Create(uri);
FTPRequest.Timeout = (1000 * 60 * 30);
FTPwebResponse = FTPRequest.GetResponse();
readStream = FTPwebResponse.GetResponseStream();
}
else
if (url.Contains("http"))
{
HTTPRequest = (HttpWebRequest)WebRequest.Create(uri);
HTTPRequest.Timeout = (1000 * 60 * 30);
HTTPwebResponse = (HttpWebResponse)HTTPRequest.GetResponse();
readStream = HTTPwebResponse.GetResponseStream();
}
BinaryReader br = new BinaryReader(readStream);
BinaryWriter bw = new BinaryWriter(System.IO.File.Open(FileNameWithPath, FileMode.Create), Encoding.UTF8);
byte[] buff = new byte[1024];
int c=1;
while(c > 0 )
{
c = br.Read(buff, 0, 1024);
for(int i=0;i<c;i++)
bw.Write(buff[i]);

}

bw.Close();