使用选定的方法从文本文件打印到控制台
Print from text file to console using a selected method
所以我似乎无法在网上找到关于此的任何信息。
所以我想知道如何通过一种方法将文本文件中的数据打印到控制台应用程序。
这是一个例子,
这是 class 学生,我想用作布局类型的方法是 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);
}
}
这是我到目前为止在 PrintData void 中得到的内容:
public void PrintData()
{
using (StreamReader readtext = new StreamReader("data.txt"))
{
string readMeText = readtext.ReadLine();
}
}
基本上,我想再次以 DisplayInfo() 中显示的格式在 PrintData() void 中打印它。
假设您有以下格式的文本 (demo.txt) 文件:
s1 140
s2 250
s3 400
其中 s1
、s2
、s3
是学生 ID,140
、250
、400
是他们的分数。
现在您需要从文件中读取行,而不是 End of Stream
用空格拆分读取行并写入控制台。以下功能是正确的:
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");
}
}
}
}
更新
下面是如何使用对象 serialization/deserialization 的示例:
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();
}
}
}
}
}
所以我似乎无法在网上找到关于此的任何信息。 所以我想知道如何通过一种方法将文本文件中的数据打印到控制台应用程序。
这是一个例子, 这是 class 学生,我想用作布局类型的方法是 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);
}
}
这是我到目前为止在 PrintData void 中得到的内容:
public void PrintData()
{
using (StreamReader readtext = new StreamReader("data.txt"))
{
string readMeText = readtext.ReadLine();
}
}
基本上,我想再次以 DisplayInfo() 中显示的格式在 PrintData() void 中打印它。
假设您有以下格式的文本 (demo.txt) 文件:
s1 140
s2 250
s3 400
其中 s1
、s2
、s3
是学生 ID,140
、250
、400
是他们的分数。
现在您需要从文件中读取行,而不是 End of Stream
用空格拆分读取行并写入控制台。以下功能是正确的:
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");
}
}
}
}
更新
下面是如何使用对象 serialization/deserialization 的示例:
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();
}
}
}
}
}