web-dev-qa-db-ja.com

ファイルがSharePointSPFolderに存在するかどうかを判断する方法

SPFolder内のファイルをループして、指定されたファイル名(文字列)が存在するかどうかを判断する以外の方法はありますか?

17
Chris Woodruff

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オブジェクトが返されます。

28
Lars Fastrup

ただし、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 )
     {
           .
           .
     }
}
10
Ben

[〜#〜] caml [〜#〜] クエリを使用するのが最も効率的な方法です( ここの例

CAMLは少し扱いに​​くい場合があるため、CAMLの詳細を非表示にする Linq to Sharepoint プロバイダーも確認する価値があります。

1
Paul Nearney