2017-05-24 1 views
0

Donc, je ne peux pas trouver quelque chose à ce sujet en ligne. Donc, je veux savoir comment imprimer des données à partir d'un fichier texte à l'application de la console par une méthode.Imprimer à partir du fichier texte à la console en utilisant une méthode sélectionnée

Voici un exemple, C'est l'élève de la classe, et la méthode que je suis désireux d'utiliser comme un type de mise en page est DisplayInfo():

class Student 
{ 
    public string ID { get; set; } 
    public double Score { get; set; } 

    public Student(string SID, double SC) 
    { 
     ID = SID; 
     Score = SC; 
    } 

    public void DisplayInfo() 
    { 
     Console.WriteLine(ID,": " + Score); 
    } 
} 

Voici ce que j'ai jusqu'à présent à l'intérieur mon vide PrintData:

public void PrintData() 
{ 
    using (StreamReader readtext = new StreamReader("data.txt")) 
    { 
     string readMeText = readtext.ReadLine(); 

    } 
} 

en fait, encore une fois, je suis désireux d'imprimer dans le format indiqué dans DisplayInfo(), à l'intérieur du vide PrintData().

+0

Vous avez erreur dans 'Console.WriteLine (ID , ":" + Score); 'il peut être doit être Console.WriteLine (ID +": "+ Score);' –

Répondre

1

Supposons que vous avez un texte fichier (demo.txt) dans ce format:

s1 140
s2 250
s3 400

s1, s2, s3 sont studeintID et 140, 250, 400 sont leurs scores.

Vous devez maintenant lire les lignes du fichier alors que ce n'est pas la ligne de lecture divisée End of Stream par des espaces et écrire dans la console. La fonction suivante fait droit que:

public void PrintData() 
{ 
    using (var readtext = new StreamReader(@"c:\Users\IIG\Desktop\demo.txt")) 
    { 
     while (!readtext.EndOfStream) 
     { 
      string currentLine = readtext.ReadLine(); 
      var args = currentLine.Split(' '); 
      if (args.Length > 1) 
      { 
       Console.WriteLine(args[0] + ":" + args[1]); 
      } 
      else 
      { 
       Console.WriteLine("Invalid line"); 
      } 
     } 
    } 
} 

MISE À JOUR

Voici par exemple comment vous pouvez utiliser la sérialisation objet/désérialisation pour cela:

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Xml.Serialization; 

namespace ConsoleApplication4 
{ 
    public class Program 
    { 
     static void Main(string[] args) 
     { 
      List<Student> students = new List<Student>(); 
      students.Add(new Student("s1", 140)); 
      students.Add(new Student("s2", 200)); 
      students.Add(new Student("s3", 250)); 
      XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<Student>)); 
      if(!File.Exists(@"c:\Users\IIG\Desktop\demo.txt")) 
      { 
       using (File.Create(@"c:\Users\IIG\Desktop\demo.txt")) 
       { 

       } 

      } 
      using (var writer = new StreamWriter(@"c:\Users\IIG\Desktop\demo.txt")) 
      { 
       xmlSerializer.Serialize(writer,students); 
      } 
      PrintData(); 
     } 
     [Serializable] 
     public class Student 
     { 
      public string ID { get; set; } 
      public double Score { get; set; } 

      public Student() 
      { 

      } 
      public Student(string SID, double SC) 
      { 
       ID = SID; 
       Score = SC; 
      } 
      public void DisplayInfo() 
      { 
       Console.WriteLine(ID+ ": " + Score); 
      } 
     } 
     public static void PrintData() 
     { 
      using (var readtext = new StreamReader(@"c:\Users\IIG\Desktop\demo.txt")) 
      { 
       XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<Student>)); 
       List<Student> readStudents = (List<Student>)xmlSerializer.Deserialize(readtext); 
       foreach (var student in readStudents) 
       { 
        student.DisplayInfo(); 
       } 

      } 
     } 
    } 
} 
+0

@ William.K1 oui c'est possible mais pour cela vous devrez sérialiser les objets Etudiants au fichier texte quand vous garderez les étudiants à classer et à désérialiser lorsque vous voulez lire à partir du fichier et écrire à la console –

+0

pas trop sûr de ce que vous voulez dire. Chaque fois que j'essaye quelque chose avec DisplayInfo dans PrintData, il dit simplement qu'il n'existe pas dans le contexte actuel. –

+0

@ William.K1 J'ai mis à jour ma réponse avec un exemple comment vous pouvez le faire –