使用CSOM打开并读取位于SharePoint文档库中的文本文件

时间:2015-11-18 15:16:31

标签: c# .net vb.net sharepoint

我可以在SharePoint中获取文件的相对路径。我现在需要打开文件并阅读其内容。这就是我被困住的地方。我不知道如何打开文件进行阅读,除非它是我的硬盘驱动器的本地文件,但事实并非如此。这是我的代码:

If item.FieldValues("File_x0020_Type") = "html" Then
    Dim the_file As SP.File = oWebsite.GetFileByServerRelativeUrl(item.FieldValues("FileRef"))
    Dim reader As StreamReader = New StreamReader(the_file)  
    Dim sr As StreamReader = StreamReader(the_file)
    textbox1.text = sr.ReadToEnd()
    reader.Close()
End If

1 个答案:

答案 0 :(得分:1)

抱歉误读了。

ClientContext clientContext = new ClientContext("http://SpSiteUrl");
clientContext.ExecuteQuery();
FileInformation fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, "thisFile");

System.IO.Stream stream = fileInfo.Stream;

using (StreamReader r = new StreamReader(stream))
     string line;
     while((line = file.ReadLine()) != null)
     {
         System.Console.WriteLine (line);  
     }
}

一旦设置为Stream,您应该能够正常循环播放。

我也看到了第二种方法。

using (var clientContext = new ClientContext(url))  {
    Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, "thisFile");
    using (var fileStream = System.IO.File.Create(getItem))
     {                  
        fileInfo.Stream.CopyTo(fileStream);
     }
}

然后你也可以正常遍历fileStream。

这是第二种循环方式 -

using (StreamReader sr = new StreamReader(stream)) 
{
      while (sr.Peek() >= 0) 
      {
             Console.WriteLine(sr.ReadLine());
      }
}

实际上,现在我再次阅读你的问题了 - 你可以做到这一点。

Dim reader As StreamReader = New StreamReader(stream)  
textbox1.text = reader.ReadToEnd()
reader.Close()