SharePoint服务器端对象模型 之 访问文件和文件夹(Part 2)
4、添加文件夹
文件夹的创建方法在文档库和普通列表中稍有不同。
在文档库中,与一般的集合操作相同,直接使用SPFolderCollection的Add(string name)方法即可添加文件夹,例如下面的程序在文档库的根目录中添加一个名为“技术文档”的子文件夹:
1: using(SPSite site = new SPSite("http://sp2010/book"))
2: {
3: using(SPWeb web = site.OpenWeb())
4: {
5: SPList doclib = web.Lists["共享文档"];
6: doclib.RootFolder.SubFolders.Add("技术文档");
7: }
8: }
但是这种方法对于普通列表来说就行不通了。在文档库中,SharePoint会将我们用上述方法创建的文件夹自动关联创建一个列表条目;但是在普通列表中,这种文件夹不会自动关联到新的列表条目上,因此在普通列表中使用这种方法创建出的文件夹,不会显示在任何一个列表视图中。在普通列表中,我们需要使用创建一个“文件夹类型的列表条目”的方式,来新建文件夹(既然是创建一个列表条目,不要忘记最后需要调用Update方法才能创建成功):
1: using(SPSite site = new SPSite("http://sp2010/book"))
2: {
3: using(SPWeb web = site.OpenWeb())
4: {
5: SPList list = web.Lists["Chapters"];
6: SPListItem fldItem = list.AddItem();
7: fldItem.FileSystemObjectType = SPFileSystemObjectType.Folder;
8: fldItem["Title"] = "第一部分";
9: fldItem.Update();
10: }
11: }
这种方法同样适用与文档库中的文件夹创建,但不同的是需要将文件夹名称写入“FileLeafRef”字段,而不是“Title”字段。(FileLeafRef是“名称”字段的内部名称,Title是“标题”字段的内部名称)
5、在文件夹中创建列表条目
之前在创建列表条目、文件夹的时候,都是在列表的根目录中进行的,当我们需要在某个子目录中创建列表条目或子文件夹的时候,需要用到SPList的AddItem方法的一个重载:
1: public SPListItem AddItem(string folderUrl,
2: SPFileSystemObjectType underlyingObjectType)
或者SPListItemCollection的Add方法的类似重载:
1: public SPListItem Add(string folderUrl,
2: SPFileSystemObjectType underlyingObjectType)
其中第一个参数需要指定列表条目所在的子文件夹的路径(要求使用相对服务器的Url地址);第二个参数指定了要创建的列表条目的类型,即创建普通条目还是创建文件夹。下面给出了一个例子:
1: using (SPSite site = new SPSite("http://sp2010/book"))
2: {
3: using (SPWeb web = site.OpenWeb())
4: {
5: SPList list = web.Lists["Chapters"];
6: SPFolder folder = web.GetFolder(list.RootFolder.Url
7: + "/第一部分");
8: SPListItem itmInFolder = list.AddItem(folder.ServerRelativeUrl,
9: SPFileSystemObjectType.File);
10: itmInFolder["Title"] = "Ch01";
11: itmInFolder.Update();
12: }
13: }
6、文件(SPFile)和文件夹(SPFolder)的常用属性
SPFile的一些常用属性如下:
名称 |
类型 |
说明 |
Exists |
bool |
文件是否存在 |
IconUrl |
string |
与文件类型相关联的图标的Url |
Item |
SPListItem |
文档对应的列表条目对象 |
Length |
long |
文件的大小 |
Name |
string |
文件名 |
ParentFolder |
SPFolder |
所在文件夹的对象 |
ServerRelativeUrl |
string |
文件相对于服务器的Url |
Url |
string |
文件相对于网站的Url |
SPFolder的一些常用属性如下:
名称 |
类型 |
说明 |
Exists |
bool |
文件夹是否存在 |
Files |
SPFileCollection |
文件夹中的文件集合 |
Item |
SPListItem |
文件夹对应的列表条目对象 |
Name |
string |
文件夹名称 |
ParentFolder |
SPFolder |
父文件夹的对象 |
SubFolders |
SPFolderCollection |
子文件夹集合 |
ServerRelativeUrl |
string |
文件相对于服务器的Url |
Url |
string |
文件相对于网站的Url |