2011-07-04 48 views
1

我正在用Windows Phone 7中的C#覆蓋文件。當我這樣做時,每行的開頭都會添加一個看似隨機的字符。編寫一個文件,添加隨機字符到每行的開頭

這是怎麼發生的?

代碼:

public static bool overwriteFile(string filename, string[] inputArray) 
    { 
     try 
     { 
      IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication(); 

      FileStream stream = store.OpenFile(filename, FileMode.Create); 
      BinaryWriter writer = new BinaryWriter(stream); 

      foreach (string input in inputArray) 
      { 
       writer.Write(input + "\n"); 
      } 

      writer.Close(); 
      return true; 

     } 
     catch (IOException ex) 
     { 
      return false; 
     } 
    } 

Lodaing代碼:

public static Idea[] getFile(string filename) 
    { 
     try 
     { 
      IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication(); 
      string fileContents = null; 
      if (store.FileExists(filename)) // Check if file exists 
      { 
       IsolatedStorageFileStream save = new IsolatedStorageFileStream(filename, FileMode.Open, store); 

       StreamReader streamReader = new StreamReader(save); 
       fileContents = streamReader.ReadToEnd(); 
       save.Close(); 

      } 

      string[] lines = null; 
      if (fileContents != null) 
      { 
       lines = fileContents.Split('\n'); 
      } 



      Idea[] ideaList = null; 
      if (lines != null) 
      { 
       ideaList = new Idea[lines.Length]; 
       for (int i = 0; i < lines.Length; i++) 
       { 
        ideaList[i] = new Idea(lines[i].TrimEnd('\r')); 
       } 
      } 

      return ideaList; 
     } 
     catch (IOException ex) 
     { 
      return null; 
     } 
    } 
+0

你是如何加載文件? – BrokenGlass

+0

已在上面添加 – Chris

+0

您是否檢查過「輸入」實際上是否包含您認爲它包含的內容? – ChrisF

回答

6

隨機字符是一個長度前綴;見http://msdn.microsoft.com/en-us/library/yzxa6408.aspx

您應該使用某種類型的TextWriter將字符串寫入文件;不是BinaryWriter。

StreamWriter可能是最好的,然後你可以使用WriteLine方法。

+0

謝謝你工作完美! – Chris

+0

不用擔心隊友。 –

1

而不是使用'\n'的,請嘗試使用Environment.NewLine

+0

好的提示,但沒有解決我的問題 – Chris

0

嘗試改變這種

writer.Write(input + "\n");

writer.WriteLine(input);

+0

WriteLine方法似乎不存在? – Chris

1

您正在使用BinaryWriter進行書寫,並使用TextReader進行讀取。將您的寫代碼更改爲使用StreamWriter(它是一個TextWriter)而不是BinaryWriter。這也會讓你瞭解Naveed推薦的WriteLine方法。

+0

感謝您的幫助! – Chris

相關問題