我下载了文件的部分(图片),然后我想将这些部分保存到一个文件中。分段文件写入问题
问题是,第一部分被正确下载和保存(我可以看到该部分)。但是,当第二部分被保存(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