Подтвердить что ты не робот

Как определить, существует ли файл в SharePoint SPFolder

Есть ли способ, кроме прокрутки файлов в SPFolder, чтобы определить, существует ли имя файла (строка)?

4b9b3361

Ответ 1

Вы можете, если знаете, что 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

Но если вы используете SP 2010 Client 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

Использование CAML является наиболее эффективным способом (example здесь)

CAML может быть немного громоздким, поэтому стоит посмотреть на поставщик Linq to Sharepoint, который скрывает детали CAML от вас.