SPFolder内のファイルをループして、指定されたファイル名(文字列)が存在するかどうかを判断する以外の方法はありますか?
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オブジェクトが返されます。
ただし、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 )
{
.
.
}
}
[〜#〜] caml [〜#〜] クエリを使用するのが最も効率的な方法です( ここの例 )
CAMLは少し扱いにくい場合があるため、CAMLの詳細を非表示にする Linq to Sharepoint プロバイダーも確認する価値があります。