除了循环SPFolder中的文件以确定是否存在给定文件名(字符串)之外,还有其他方法吗?
如果您知道URL,也可以使用SPFile.Exists属性,如下所示:
using (SPSite site = new SPSite("http://server/site")) using (SPWeb web = site.OpenWeb()) { SPFile file = web.GetFile("/site/doclib/folder/filename.ext"); if (file.Exists) { ... } }
如果文件不存在,首先会想到假设SPWeb.GetFile抛出异常.但正如你所看到的那样 - 它实际上会返回一个SPFile对象.
但是,如果您使用的是SP 2010 Client OM,如果该文件不存在,它实际上会抛出异常:
using(var clientContext = new ClientContext(site)) { Web web = clientContext.Web; Microsoft.SharePoint.Client.File file = web.GetFileByServerRelativeUrl("/site/doclib/folder/filename.ext"); bool bExists = false; try { clientContext.Load(file); clientContext.ExecuteQuery(); //Raises exception if the file doesn't exist bExists = file.Exists; //may not be needed - here for good measure } catch{ } if (bExists ) { . . } }