2017-08-30 68 views
0

我目前正在爲學校進行一項任務,我正在嘗試將二維字符串數組寫入文本文件。我有數組,並知道它的工作正常,但每次我嘗試將文件讀入Streamwriter時,都會得到「System.ArgumentException:'路徑中存在非法字符。'」。我相對較新的C#,我不知道如何解決這個問題。C#不能在C#中的txt文件中使用Streamwriter屬性。資源

這是我的代碼。我只需要知道如何將我的2D數組寫入文本文件而不會出現此錯誤。謝謝,所有和任何幫助非常感謝!

// This line under is where the error happens 
    using (var sw = new StreamWriter(Harvey_Norman.Properties.Resources.InventoryList)) 
     { 
      for (int i = 0; i < 4; i++) 
      { 
       for (int j = 0; j < 3; j++) 
       { 
        sw.Write(InventoryArray[i, j] + " "); 
       } 
       sw.Write("\n"); 
      } 

      sw.Flush(); 
      sw.Close(); 
     } 
+0

在'using'語句中設置一個斷點,告訴我們'Harvey_Norman.Properties.Resources.InventoryList'包含了什麼。 –

+0

這就是文件 'Jeff [測試123 [30 [50] John [測試456 [34 [52] Deb [測試789 [10 [80]' –

+0

您無法寫入嵌入式資源,必須使用文件名。像「c:\ foo \ bar.txt」爲什麼你試圖使用嵌入式資源很難猜測。 –

回答

0

我的猜測是,Harvey_Norman.Properties.Resources.InventoryList是在你的項目中的資源,它的類型是string--和該字符串的值不適合您的操作系統的有效路徑。

StreamWriter將採取一個字符串,在這種情況下,它期望打開一個文件與該字符串的路徑;或者它將需要一個流,你可以寫入該流。看起來你正在嘗試做前者;但您需要檢查該資源的值以查看它是否爲vaild路徑。

+0

我有這個文件中 '傑夫[測試123 [30 [50] 約翰[測試456 [34 [52] 德布[測試789 [10 [80]' ,我試圖寫在這文件 –

+0

但是'Harvey_Norman.Properties.Resources.InventoryList'是什麼?這是一個字符串,是一個文件的內容的名稱?或者是內容本身。它幾乎肯定不是'文件'。它可能是編譯器從文件中讀取的資源,這意味着它只是C#看到的文件內容。您需要將文件的名稱傳遞給'StringWriter'構造函數,而不是文件的內容。 – Tim

0

您試圖構建帶有無效文件路徑的StreamWriter

此外,如果你只是寫出來的文字,你可以使用File.CreateText()創建StreamWriter,例如:

var tempFilePath = Path.GetTempFileName(); 

using (var writer = File.CreateText(tempFilePath)) 
{ 
    for (int i = 0; i < 4; i++) 
    { 
     for (int j = 0; j < 3; j++) 
     { 
      if (j > 0) 
       writer.WriteLine(" "); 

      writer.Write(InventoryArray[i, j]); 
     } 

     writer.WriteLine(); 
    } 
} 

using會自動沖洗和關閉文件和處置StreamWriter