2008-12-11 29 views

回答

27

你可以,如果你知道这个网址的使用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对象。

+0

为我工作,谢谢 – User5590 2016-10-18 09:25:29

1

使用CAML查询是最有效的方法(example here

CAML可以是一个有点笨拙,所以也值得看Linq to Sharepoint提供商,它从你隐藏CAML的细节了。

10

但是,如果你正在使用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) 
    { 
      . 
      . 
    } 
} 
+0

异常通常是引起试图做背景.Load(文件)。如果该文件不存在,则无法加载完整对象,以便测试本身打破结果。 如果使用clientContext.Load(file,f => f.Exists)替换clientContext.Load(file),则不会引发异常。 – 2017-01-24 20:20:23

相关问题