我试图比较两个文件,一个在本地计算机上,另一个在Web服务器上,如果Web服务器上的文件较新,则下载/覆盖本地文件.虽然FileInfo不会采用URI,但有人可以推荐一种方法
private void checkver()
{
FileInfo sourceFile = new FileInfo("download.zip");
if (sourceFile.Exists)
{
FileInfo destFile = new FileInfo(@"http://www.google.com/download.zip");
if (destFile.Exists && destFile.LastWriteTime >= sourceFile.LastWriteTime)
{
MessageBox.Show("File already up to date");
}
else
{
MessageBox.Show("File is not up to date");
}
}
}
Run Code Online (Sandbox Code Playgroud) 当我运行我的方法来下载文件时,它不是在等待下载完成之后再调用下一个方法"unzipfiles",我怎么能让它等到文件下载完毕?
private void Download_Click(object sender, EventArgs e)
{
WebClient webClient = new WebClient();
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
webClient.DownloadFileAsync(new Uri("http://download1us.softpedia.com/dl/f4932a906a7dd98c7ff002b07e9bd94b/4e065004/100079174/software/portable/security/ccsetup307.zip"), @"ccsetup307.zip");
// Call unzip method
unzipfiles();
}
Run Code Online (Sandbox Code Playgroud) 我有一个尝试执行事件/方法(Download_Click)的方法,虽然由于某种原因我得到:
当前上下文中不存在"sender"这个名称当前上下文中不存在名称"e"
该按钮肯定存在,但由于某些原因在我的代码中不起作用:
private void checkver()
{
FileInfo sourceFile = new FileInfo("download.zip");
if (sourceFile.Exists)
{
var request = (HttpWebRequest)WebRequest.Create(@"http://www.google.com/download.zip");
request.Method = "HEAD";
var response = (HttpWebResponse)request.GetResponse();
if (response.LastModified > sourceFile.LastWriteTime)
{
MessageBox.Show("File outdated");
Download_Click(sender, e);
// use response.GetStream() to download the file.
}
else
{
MessageBox.Show("File in date");
}
}
}
Run Code Online (Sandbox Code Playgroud) 我已经在互联网上查看了各种相关信息,但它们看起来都有点极端.
我目前ProgressBar在Windows窗体中有一个.虽然我希望有一个百分比读数.
我的解决方案: label1.Text = e.ProgressPercentage +"%";