Есть ли способ, кроме прокрутки файлов в SPFolder, чтобы определить, существует ли имя файла (строка)?
Как определить, существует ли файл в SharePoint SPFolder
Ответ 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 от вас.