2013-01-15 47 views
1

我有一個SharePoint事件接收器,用於編寫一個功能。在FeatureActivated方法上,我想將控件添加到SharePoint主頁。爲了做到這一點,我選擇在母版頁中注入一些文本,以便通過使用StreamReader打開文件,將文本讀取到文本中,插入文本,然後使用SharePoint對象模型保存文件來添加控件。使用C修改SharePoint主頁面文本#

我遇到了StreamReader問題。當它讀取到文本流時,我回來的是一堆問號。

下面是代碼:

foreach(SPFile file in files) 
{ 
    switch(new FileInfo(file.Name).Extension) 
    { 
     case ".master": 
      string masterString = string.Empty; 
      using(StreamReader reader = new StreamReader(file.OpenBinaryStream())) 
      { 
       masterString = reader.ReadToEnd(); 
      } 
      // 
      // Inject the text I want into the masterString 
      // Convert masterString into byte [] 
      // Save the byte [] back to SharePoint, overwriting the master 
      // page       
      // 
      break; 
    } 
} 

的masterString總是回來爲??????????????????????? .... 我需要它以純文本的形式回來。

任何想法?

回答

0

嘗試不同的編碼(UTF-8,UTF-16等),用於響應

public StreamReader(
string path, 
Encoding encoding) 
+0

感謝。我試過,沒有運氣以下: Encoding.UTF32 Encoding.UTF7 Encoding.UTF8 Encoding.Unicode Encoding.Default –

+0

流可能是返回一個字節數組,而不是可以把字符串中的文本。試驗[Convert.ToBase64String](http://msdn.microsoft.com/en-us/library/dhx0d524.aspx)方法。此外,您可能需要使用BinaryReader,以便流返回一個字節數組。主頁面可能不是純文本,因此無法以您喜歡的方式閱讀。 – keifer94

+0

下面是將字節數組轉換爲字符串的另一個鏈接:http://stackoverflow.com/questions/11654562/how-convert-byte-array-to-string。祝你好運! – keifer94