2017-08-30 2 views
0

Je travaille actuellement sur une tâche pour l'école où j'essaye d'écrire un tableau de chaînes 2D dans un fichier texte. J'ai le tableau et je sais qu'il fonctionne bien, mais chaque fois que j'essaie de lire le fichier dans Streamwriter, je reçois "System.ArgumentException: 'Caractères illégaux dans le chemin.'". Je suis relativement nouveau à C# et je n'ai aucune idée de comment résoudre ce problème.C# Je ne peux pas utiliser Streamwriter dans un fichier txt dans C# Properties.Resources

Ceci est mon code. J'ai juste besoin de savoir comment écrire mon tableau 2D dans le fichier texte sans avoir cette erreur. Merci, toute aide est très appréciée!

// 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

Définissez un point d'arrêt sur votre instruction 'using' et dites-nous ce que contient' Harvey_Norman.Properties.Resources.InventoryList'. –

+0

'Jeff [Test 123 [30 [50] John [Test 456 [34 [52] Deb [Test 789 [10 [80]' –

+0

Vous ne pouvez pas écrire dans une ressource intégrée, vous doit utiliser un nom de fichier. Comme "c: \ foo \ bar.txt" Pourquoi vous essayez d'utiliser une ressource intégrée est très difficile à deviner. –

Répondre

0

Je pense que Harvey_Norman.Properties.Resources.InventoryList est une ressource dans votre projet qui est entré comme string-- et la valeur de cette chaîne n'est pas un chemin valide pour votre système d'exploitation. Soit prend une chaîne de caractères, auquel cas il s'attend à ouvrir un fichier avec le chemin de cette chaîne; ou il faudra un flux, et vous pouvez écrire à ce flux. On dirait que vous essayez de faire le premier; mais vous devez vérifier la valeur de cette ressource pour voir si c'est un chemin de vaild.

+0

J'ai cela dans le fichier 'Jeff [Test 123 [30 [50] John [Test 456 [34 [52] Deb [Test 789 [10 [80]' Et je suis en train d'écrire sur cette fichier –

+0

Mais qu'est ce que 'Harvey_Norman.Properties.Resources.InventoryList'? Est-ce une chaîne qui est le nom d'un fichier ce contenu? Ou est-ce le contenu lui-même? Ce n'est certainement pas un 'fichier'. C'est peut-être une ressource que le compilateur lit à partir d'un fichier, ce qui signifie que c'est vraiment le contenu du fichier aussi loin que C# le voit. Vous devez transmettre le nom d'un fichier au constructeur 'StringWriter', pas le contenu d'un fichier. – Tim

0

Vous essayez de construire un StreamWriter avec un chemin de fichier non valide.

Aussi, si vous êtes juste texte écrit, vous pouvez utiliser File.CreateText() pour créer un StreamWriter, par exemple:

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

Le using sera automatiquement flush et fermez le fichier, et éliminer la StreamWriter.