如何使用c#和WebClient类检查服务器上是否存在文件

在我的应用程序中,我使用WebClient类通过简单地调用DownloadFile方法从Web服务器下载文件。 现在我需要在下载之前检查某个文件是否存在(或者我只是想确保它存在)。 我有两个问题:

  1. 在不通过线路传输大量数据的情况下检查服务器上是否存在文件的最佳方法是什么? (这是我需要检查的大量文件)
  2. 有没有办法在不下载的情况下获取给定远程文件的大小?

提前致谢!

WebClient相当有限; 如果切换到使用WebRequest ,则可以发送HTTP HEAD请求。 发出请求时,您应该收到错误(如果文件丢失),或者带有有效ContentLength属性的WebResponse

编辑:示例代码:

 WebRequest request = WebRequest.Create(new Uri("http://www.example.com/")); request.Method = "HEAD"; using(WebResponse response = request.GetResponse()) { Console.WriteLine("{0} {1}", response.ContentLength, response.ContentType); } 

使用WebClient类请求文件时,404错误(找不到文件)将导致exception。 最好的方法是处理该exception并使用一个标志,可以设置该标志以查看该文件是否存在。

示例代码如下:

 System.Net.HttpWebRequest request = null; System.Net.HttpWebResponse response = null; request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("www.example.com/somepath"); request.Timeout = 30000; try { response = (System.Net.HttpWebResponse)request.GetResponse(); flag = 1; } catch { flag = -1; } if (flag==1) { Console.WriteLine("File Found!!!"); } else { Console.WriteLine("File Not Found!!!"); } 

您可以将代码放在相应的if块中。 希望能帮助到你!