您的位置:首页 > 其它

WSS3SDK之:如何读取,拷贝和移动文件

2009-01-17 18:12 176 查看
我们可以通过SPWeb类的GetFolder方法返回某个特定的文件夹,然后访问其中某个文件。在实例化SPWeb
象后(如mySite),使用SPFolder myFolder=mySite.GetFolder("Shared
Documents")(对于VB 2005为 Dim myFolder As SPFolder =
mySite.GetFolder("Shared Documents"))来返回网站中的共享文档(Shared Documents)文件夹。

下面的例子返回文件夹中文件的集合,并显示文件信息。

VB

Dim myFiles As SPFileCollection = myFolder.Files

Dim file As SPFile

For Each file In myFiles

Response.Write(file.Url.ToString() & "<BR>")

Response.Write(file.Length.ToString() & "<BR>")

Next file

C#

SPFileCollection myFiles = myFolder.Files;

foreach (SPFile file in myFiles)

{

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

Private mySite As SPWeb

Private Sub Page_Load(sender As Object, e As System.EventArgs)

mySite = SPControl.GetContextWeb(Context)

End Sub 'Page_Load

Private 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#

private SPWeb mySite;

private void Page_Load(object sender, System.EventArgs e)

{

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 mySite As SPWeb = SPControl.GetContextWeb(Context)

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 i

C#

SPWeb mySite = SPControl.GetContextWeb(Context);

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命名空间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: