遍历SPWeb下的文件库文件夹和文件

背景:

      最近进在做一个MOSS Farm的管理报表,需要By Farm,By Site,By Web,By Libray,By Document

去检索文件的生命周期。在开发的过程中Farm可以通过手动维护(数据不会超过10笔),site\web可以通过

web表来获取,以及Libray可以通过siteid和webid来写C# Console程式在Web Webserver下周期执行来得到

文件库的数据。

      最后,遇到一个问题,如何通过SP对象模型编程,来得到Document的数据。

 

思路:

   1、  利用SPFold模型,Feach遍历SubFolders对象来查询子文件夹下的文档模型对象。

   2、 利用spfolder.Files来获取当前文件目录下的文档模型对象。

   3、 以上思路的求解,都必须基于由已知的文件库对象SPDocumentLibray,如何Coding来得到此文件库的SPFolder对象。

 

之前问题的解决办法,

      假设我们已经知道该网站的siteid,webid信息,

下面我们就来实现遍历构造此网站下所有文件库的SPFolder对象的方法。

代码测试如下:

    

namespace TestWeb
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string br = System.Environment.NewLine;
Guid siteid
= new Guid("5E601555-DD68-4518-889B-95D162A2A348");
Guid webid
= new Guid("5A7EF298-C322-4C41-9360-FE68AC63B23B");
SPSite site
= null;
SPWeb web
= null;
SPListCollection lists
= null;
SPFolder folder
= null;
SPFolderCollection folders
= null;
string s = "";
try
{
site
= new SPSite(siteid);
web
= site.OpenWeb(webid);
lists
= web.GetListsOfType(SPBaseType.DocumentLibrary);
foreach (SPList list in lists)
{
try
{
folder
= list.RootFolder; // web.GetFolder(list.DefaultViewUrl); // 失败:AllItems.aspx
s += folder.Name + " ; " + list.Title + "<br/>";
}
catch (Exception xx)
{
s
+= xx.Message + " ; " + list.Title + "<br/>";
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
site
= null;
web
= null;
}

Response.Write(s);
}
}
}
}

 

 

测试结果

 

剩下的事情,就是利用SPForder来遍历收集当前文件的信息

和当前子文件夹下的文件信息。就不在详细说明了。

posted @ 2011-09-26 19:05  Areas  阅读(341)  评论(0编辑  收藏  举报