2008-12-11 36 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

相關問題