代码之家  ›  专栏  ›  技术社区  ›  Chris Woodruff

如何确定SharePoint SPFolder中是否存在文件[已关闭]

  •  17
  • Chris Woodruff  · 技术社区  · 17 年前

    除了循环浏览spfolder中的文件外,是否还有其他方法来确定是否存在给定文件名(字符串)?

    3 回复  |  直到 12 年前
        1
  •  27
  •   Lars Fastrup    17 年前

    如果您知道该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对象。

        2
  •  10
  •   Community Mohan Dere    14 年前

    但是,如果您使用的是SP2010客户机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 )
         {
               .
               .
         }
    }
    
        3
  •  1
  •   Paul Nearney    17 年前

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

    caml可能有点笨拙,所以也值得一看 Linq to Sharepoint 提供者,它将caml的细节隐藏起来。