我下載了文件的部分(圖片),然後我想將這些部分保存到一個文件中。分段文件寫入問題
問題是,第一部分被正確下載和保存(我可以看到該部分)。但是,當第二部分被保存(FileMode.Append)時,圖片似乎被破壞了。
下面的代碼:
HttpWebRequest webRequest;
HttpWebResponse webResponse;
Stream responseStream;
long StartPosition, EndPosition;
if (File.Exists(LocalPath))
fileStream = new FileStream(LocalPath, FileMode.Append);
else fileStream = new FileStream(LocalPath, FileMode.Create);
webRequest = (HttpWebRequest)WebRequest.Create(FileURL);
webResponse = (HttpWebResponse)webRequest.GetResponse();
responseStream = webResponse.GetResponseStream();
StartPosition = 0; //download first 52062 bytes of the file
EndPosition = 52061;
webRequest.AddRange(StartPosition, EndPosition);
int SeekPosition = (int)StartPosition;
while ((bytesSize = responseStream.Read(Buffer, 0, Buffer.Length)) > 0)
{
lock (fileStream)
{
fileStream.Seek(SeekPosition, SeekOrigin.Begin);
fileStream.Write(Buffer,0, bytesSize);
}
//the Buffer.Length is 2048.
//When the bytes count to download is < 2048 then I decrease the Buffer.Length
//to prevent downloading more that 52062 bytes.
DownloadedBytesCount += bytesSize;
SeekPosition += bytesSize;
long TotalToDownload = EndPosition - StartPosition;
long bytesLeft = TotalToDownload - DownloadedBytesCount;
if (bytesLeft < Buffer.Length)
Buffer = new byte[bytesLeft];
}
當我要下載的文件的第二部分,我設置
StartPosition = 52062;
EndPosition = 104122;
,再有就是我上述的問題。爲什麼文件沒有正確地被打開?
「似乎被打破」是什麼意思?不要使用FileMode.Append。 – 2010-09-12 13:42:27
當我在寫第二部分後嘗試打開該圖片時,我沒有看到它的內容。 – Tony 2010-09-12 13:47:06
你的代碼太錯了我甚至不知道從哪裏開始。爲什麼你需要全部下載文件? – dtb 2010-09-12 13:58:15