2008-12-11 4 views

Antwort

27

Sie können, wenn Sie die URL kennen verwenden auch die SPFile.Exists Eigenschaft wie folgt:

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) 
    { 
    ... 
    } 
} 

Man würde auf den ersten Gedanken annehmen SPWeb.GetFile eine Ausnahme auslöst, wenn die Datei nicht existiert. Aber wie Sie sehen, ist dies nicht der Fall - es wird tatsächlich ein SPFile-Objekt zurückgeben.

+0

für mich gearbeitet, Dank – User5590

1

eine CAML Abfrage ist die effizienteste Art und Weise (example here)

CAML ein bisschen sperrig sein kann, so ist auch wert auf Linq to Sharepoint Anbieter suchen, die die Details CAML versteckt von Ihnen entfernt.

10

Aber wenn Sie SP 2010 Kunden OM verwenden, wäre es tatsächlich eine Ausnahme aus, wenn die Datei nicht existiert:

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

Die Ausnahme verursacht wird in der Regel durch den Kontext zu tun versuchen, .Lade Datei). Wenn die Datei nicht existiert, können Sie das vollständige Objekt nicht laden, so dass der Test das Ergebnis selbst unterbricht. Die Ausnahme wird nicht ausgelöst, wenn Sie clientContext.Load (file) durch clientContext.Load (file, f => f.Exists) ersetzen. –

Verwandte Themen