C#不能在C#中的txt文件中使用Streamwriter属性。资源

C#不能在C#中的txt文件中使用Streamwriter属性。资源

问题描述:

我目前正在为学校进行一项任务,我正在尝试将二维字符串数组写入文本文件。我有数组,并知道它的工作正常,但每次我尝试将文件读入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”为什么你试图使用嵌入式资源很难猜测。 –

我的猜测是,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

您试图构建带有无效文件路径的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