关于写文件的一点问题

yumanqing 2009-03-16 09:43:41
最近做一个简单的自动更新功能,就是从服务器下载要更新的文件到本地,其他的都弄好了,就是有一点小问题,见代码:

/// <summary>
/// 自动下载更新文件
/// </summary>
private void downfile()
{
_FileName = Application.StartupPath + "\\AutoDown\\" + _FileName;
WebClient DownFile = new WebClient();
long totalBytes;

//取得文件大小
Addtext("获取文件大小\r\n");
WebRequest request = WebRequest.Create(_Url);

WebResponse response = request.GetResponse();
totalBytes = response.ContentLength;
SetpbarMaxValue((int)totalBytes);
response.Close();

//开始下载数据
Addtext("准备下载数据 " + String.Format("{0:N2}",Convert.ToDouble(totalBytes / 1048576.0)) + " MB....\r\n");
Stream stream = DownFile.OpenRead(_Url);
byte[] arrByte = new byte[1024];
int startPos = 0;
DateTime dt = DateTime.Now;
TimeSpan curT;
double pByte = 0;
Addtext("正在下载数据....\r\n");

FileStream fStream = new FileStream(_FileName, FileMode.Append, FileAccess.Write);

while (true)
{
int readCnt = readCnt = stream.Read(arrByte, 0, 1024);

if (readCnt == 0)
{ break; }

fStream.Write(arrByte, 0, readCnt);
startPos += readCnt;
SetpbarValue(startPos);

//计算速度
curT = DateTime.Now - dt;
pByte = startPos / curT.TotalSeconds / 1024;
SetspeedValue(string.Format("下载速度 {0}KB/秒", (int)pByte));
}
stream.Close();
fStream.Close();
SetpbarValue((int)totalBytes);
Addtext("下载完毕\r\n");

Application.Exit();

}


_Url是下载地址,_FileNname是文件名,
报错的地方:
FileStream fStream = new FileStream(_FileName, FileMode.Append, FileAccess.Write);
如果新下载的文件本地也有的话,就OK,如果是新增的文件,本地的不存在,就报错,该怎么改下呢?本人对文件操作不是很熟悉
谢谢
...全文
78 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
杰克CZ 2009-03-16
  • 打赏
  • 举报
回复
if(!File.Exist(_FileName))
FileStream fStream = new FileStream(_FileName,FileMode.Create,FileAccess.ReadWrite);
else
FileStream fStream = new FileStream(_FileName, FileMode.Append, FileAccess.Write);
wwb82954323 2009-03-16
  • 打赏
  • 举报
回复
本地不存在的文件应该是 FileMode.Create吧
zcandyly20211 2009-03-16
  • 打赏
  • 举报
回复
友情up!
ztenv 2009-03-16
  • 打赏
  • 举报
回复
如果目录也不存在当然也要新建了,你总要去判断这两种情况的,判断以及新创花不了多少时间的;
浮生若梦丶 2009-03-16
  • 打赏
  • 举报
回复

string str1 = Server.MapPath(strImg);
if (File.Exists(str1)) //使用File.Exists判断某文件是否存在
{
//File.Delete(str1);//删除存在的文件,这里具体是什么操作你自己看
}
yumanqing 2009-03-16
  • 打赏
  • 举报
回复
如果目录也不存在呢?因为软件在一直不停的开发,可能会有这种情况
ztenv 2009-03-16
  • 打赏
  • 举报
回复
FileStream fStream = new FileStream(_FileName, FileMode.Append, FileAccess.Write);
这里要判断如果没有要下载的文件的话,必须创建这个文件,而不是Append了;

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧