下面的例子返回文件夹中文件的集合,并显示文件信息。
VB
Dim file As SPFile For Each file In myFiles
Response.Write(file.Url.ToString()
& "<BR>")Response.Write(file.Length.ToString() & "<BR>") Next file
C#
{
Response.Write(file.Url.ToString() + "<BR>");
Response.Write(file.Length.ToString() + "<BR>");
}
上面的例子列出了文件夹中每个文件的URL和大小。
我们需要引用Microsoft.SharePoint命名空间。
如果要把文件从一个位置拷贝到别的地方,可以使用SPFile类的CopyTo方法。下面的例子在Page_Load事件处理程序中实例化了当前站点上下文的SPWeb对象。在Click事件处理程序中,遍历了整个文件夹,列出各文件的文件名和大小(以kb为单位),对于大小超过用户在textbox中指定值的文件,将拷贝一份到Archive文件夹。
VB
mySite
= SPControl.GetContextWeb(Context) End Sub 'Page_LoadPrivate Sub Button1_Click(sender As Object, e As System.EventArgs)
Dim maxSize As Integer = Convert.ToInt32(TextBox1.Text)
Dim myFolder As SPFolder = mySite.GetFolder("Shared Documents")
Dim myFiles As SPFileCollection = myFolder.Files
Dim file As SPFile
For Each file In myFiles
If file.Length > maxSize * 1024 Then
Response.Write(SPEncode.HtmlEncode(file.Name)
& " :: "& file.Length / 1024 & "kb<BR>")
file.CopyTo("Archive/" & file.Name, True)
End If
Next file End Sub 'Button1_Click
C#
{
mySite = SPControl.GetContextWeb(Context);
} private void Button1_Click(object sender, System.EventArgs e)
{
int maxSize = Convert.ToInt32(TextBox1.Text);
SPFolder myFolder
= mySite.GetFolder("Shared Documents");SPFileCollection myFiles = myFolder.Files;
foreach (SPFile file in myFiles)
{
if (file.Length>(maxSize*1024))
{
Response.Write(SPEncode.HtmlEncode(file.Name) + ": "
+ file.Length/1024 + "kb<BR>");
file.CopyTo("Archive/" + file.Name, true);
}
}
}
该例中,CopyTo方法有两个参数,一个指定拷贝的目标URL地址,另一个布尔值用于指定是否覆盖目标文件夹中已有的同名文件。
您需要引用Microsoft.SharePoint,Microsoft.SharePoint.Utilities,Microsoft.SharePoint.WebControls命名空间。
下面的例子将移动共享文档(Shared Documents)中的所有文件夹到名为StorageFolder文件夹,并覆盖已存在的同名文件。
VB
Dim myFolder As SPFolder = mySite.GetFolder("Shared Documents")
Dim myFiles As SPFileCollection = myFolder.Files
Dim i As Integer For i = myFiles.Count - 1 To 0 Step -1
myFiles(i).MoveTo(
"StorageFolder/" & myFiles(i).Name, True) Next iC#
SPFolder myFolder = mySite.GetFolder("Shared Documents");
SPFileCollection myFiles = myFolder.Files; for (int i = myFiles.Count - 1; i > -1; i--)
{
myFiles[i].MoveTo("StorageFolder/" + myFiles[i].Name, true);
}
如上所示,当集合由于代码执行删除或移动项目而改变时,用于遍历集合的计数器必须采用递减。
该代码的运行需要引用Microsoft.SharePoint和Microsoft.SharePoint.WebControls命名空间。