除了在SPFolder中循环遍历文件,还有其他方法可以确定给定的文件名(字符串)是否存在吗?
除了在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客户端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 )
{
.
.
}
}