2017-04-08 1 views
1

J'ai un problème qui me demande de calculer des marques d'étudiants synthétiques à partir d'un fichier texte. Cela me donne le poids des marques dans la première rangée, le nombre d'élèves à évaluer dans la rangée suivante, et ensuite les rangées suivantes sont les notes des élèves. Ce motif se répète à travers le fichier sans séparation majeure.Utilisation de StreamReader pour lire des lignes telles que définies par d'autres lignes

Pour plus de clarté, le fichier texte et du problème here:

J'ai essayé de faire un nouvel objet avec StreamReader en utilisant le code suivant:

using (StreamReader sr = new StreamReader("DATA10.txt")) { 
    blahblahblah; 
} 

DATA10.txt est dans le même dossier que le programme. Mais je reçois "Impossible de convertir de 'chaîne' en 'System.IO.Stream'", même si dans les exemples sur MSDN et partout ailleurs, il suffit d'utiliser ce code. Qu'est-ce que je fais mal? Finalement, ce que je vais faire est de prendre la valeur de la deuxième ligne et d'utiliser streamreader pour lire cette quantité de lignes. Puis répéter l'ensemble du processus sur le prochain ensemble de données. Je ne pense vraiment pas que ce soit une copie de cette question, et les réponses sont exprimées de manière plus facile à comprendre.

+0

Dans l'extrait de code, vous manque actuellement un ')'. Doit être 'utiliser (StreamReader sr = new StreamReader (" DATA10.txt "))' –

+0

Désolé, je suis habitué à VS ajoutant les accolades fermantes pour moi. J'ai utilisé la ligne appropriée que vous avez indiquée. Pardon. – James

+0

Avez-vous mis ce fichier où se trouve le fichier .exe? – titol

Répondre

0

StreamReader est supposé prendre en Stream comme son paramètre peut également prendre un flux en tant que paramètre et vous devrez également spécifier le FileMode.

Au lieu de cela, essayer quelque chose comme ceci:

public static void Main() 
{ 
    string path = @"c:\PathToFile\DATA10.txt"; 

    try 
    {   
     using (FileStream fs = new FileStream(path, FileMode.Open)) 
     { 
      using (StreamReader sr = new StreamReader(fs)) 
      { 
       //blahblah  
      } 
     } 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine("The process failed: {0}", e.ToString()); 
    } 
} 

MSDN Reference

+1

Merci beaucoup. Je suis nouveau à C# et j'ai un concours dans environ un mois.Tout est à la hausse d'ici :) – James

0

Vous devez également définir le « Copier dans le répertoire de sortie » propriété de « DATA10.txt » dans l'Explorateur de solutions pour « Toujours copier »

using System; 
    using System.Collections.Generic; 
    using System.IO; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 

    namespace _07___ReadTextFileWhile 
    { 
     class Program 
     { 
      static void Main(string[] args) 
      { 
       StreamReader myReader = new StreamReader("DATA10.txt"); 

       string line = ""; 

       while (line != null) 
       { 
        line = myReader.ReadLine(); 
        if (line != null) 
         Console.WriteLine(line); 
       } 

       myReader.Close(); 
       Console.ReadKey(); 

      } 
     } 
    } 

enter image description here

+0

Il me donne toujours exactement la même erreur; "Impossible de convertir 'string' en 'System.IO.Stream'" – James

+0

Pourriez-vous partager le fichier "DATA10.txt" ?? –

+0

Oh putain désolé, je vais télécharger le fichier et modifier le post. J'ai oublié qu'il n'était pas inclus dans le fichier que j'ai lié .. Edited. – James