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

本文关键字:文档 文件 文本 SharePoint CSOM 读取 使用 | 更新日期: 2023-09-27 18:22:28

我可以在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

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

抱歉误解了。

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()