C# 如何列出不同的数据类型,然后保存到文件c中#
我需要得到一个包含不同数据类型的列表,并将它们保存到一个文本文件中。我已经编写了获取变量并生成文件的代码。我不知道如何制作列表,然后保存它 这是我的代码:C# 如何列出不同的数据类型,然后保存到文件c中#,c#,file,C#,File,我需要得到一个包含不同数据类型的列表,并将它们保存到一个文本文件中。我已经编写了获取变量并生成文件的代码。我不知道如何制作列表,然后保存它 这是我的代码: //Get name. Console.Write("Name:"); string name = Console.ReadLine(); //Get age. Console.Write("Age:"); int age = Convert.ToInt16(Console.ReadLine());
//Get name.
Console.Write("Name:");
string name = Console.ReadLine();
//Get age.
Console.Write("Age:");
int age = Convert.ToInt16(Console.ReadLine());
//Get favorite color.
Console.Write("Favorite color:");
string color = Console.ReadLine();
//Get favorite number.
Console.Write("Favorite number:");
int number = Convert.ToInt16(Console.ReadLine());
//Save to stats.txt
string path = @"C:\Users\max\OneDrive\Desktop\Code\C#\SaveAndLoad\STATS\stats.txt";
using (FileStream makeFile = File.Create(path));
如果要将其另存为文本,可以使用
StreamWriter
使用(StreamWriter sw=新StreamWriter(路径))
{
西南书写线(名称);
西南书写线(年龄);
sw.WriteLine(彩色);
软件写入线(编号);
}
它的行为类似于Console.WriteLine()
要读取,请执行与控制台中相同的操作
使用(StreamReader sr=新的StreamReader(路径))
{
name=sr.ReadLine();
age=int.Parse(sr.ReadLine());
color=sr.ReadLine();
number=int.Parse(sr.ReadLine());
}
或者另一个版本(只是为了好玩)来显示文件的内容
string[]line=File.ReadAllLines(路径);
Console.WriteLine(string.Join(Environment.NewLine,lines));
//您也可以将其加载到变量中
名称=行[0];
age=int.Parse(第[1]行);
颜色=线条[2];
number=int.Parse(第[3]行);
如果要将其另存为文本,可以使用StreamWriter
使用(StreamWriter sw=新StreamWriter(路径))
{
西南书写线(名称);
西南书写线(年龄);
sw.WriteLine(彩色);
软件写入线(编号);
}
它的行为类似于Console.WriteLine()
要读取,请执行与控制台中相同的操作
使用(StreamReader sr=新的StreamReader(路径))
{
name=sr.ReadLine();
age=int.Parse(sr.ReadLine());
color=sr.ReadLine();
number=int.Parse(sr.ReadLine());
}
或者另一个版本(只是为了好玩)来显示文件的内容
string[]line=File.ReadAllLines(路径);
Console.WriteLine(string.Join(Environment.NewLine,lines));
//您也可以将其加载到变量中
名称=行[0];
age=int.Parse(第[1]行);
颜色=线条[2];
number=int.Parse(第[3]行);
您可以使用
首先,创建一个类来封装数据:
public class Data
{
public string Name;
public int Age;
public string FavoriteColor;
public int FavoriteNumber;
}
然后,写入和读取文件的示例:
static void Main(string[] args)
{
Console.Write("Name:");
string name = Console.ReadLine();
//Get age.
Console.Write("Age:");
int age = Convert.ToInt16(Console.ReadLine());
//Get favorite color.
Console.Write("Favorite color:");
string color = Console.ReadLine();
//Get favorite number.
Console.Write("Favorite number:");
int number = Convert.ToInt16(Console.ReadLine());
//Save to stats.txt
string path = @"C:\Users\max\OneDrive\Desktop\Code\C#\SaveAndLoad\STATS\stats.txt";
Data data = new Data() { Name = name, Age = age, FavoriteColor = color, FavoriteNumber = number };
using (System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.OpenOrCreate))
{
System.Xml.Serialization.XmlSerializer xml = new System.Xml.Serialization.XmlSerializer(data.GetType());
xml.Serialize(fs, data);
}
// read from stats.txt into a Data object
Data data2;
using (System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open))
{
System.Xml.Serialization.XmlSerializer xml = new System.Xml.Serialization.XmlSerializer(typeof(Data));
data2 = xml.Deserialize(fs) as Data;
}
// do something with "data2":
Console.WriteLine("Name: " + data2.Name);
Console.WriteLine("Age: " + data2.Age);
Console.WriteLine("Color: " + data2.FavoriteColor);
Console.WriteLine("Number: " + data2.FavoriteNumber);
Console.Write("Press Enter to Quit");
Console.ReadLine();
}
生成的XML文件:
<?xml version="1.0"?>
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>Mike</Name>
<Age>47</Age>
<FavoriteColor>Blue</FavoriteColor>
<FavoriteNumber>42</FavoriteNumber>
</Data>
迈克
47
蓝色
42
如果您创建了另一个包含List
的类,则可以使用非常相似的代码以相同的方式序列化该类。您可以使用
首先,创建一个类来封装数据:
public class Data
{
public string Name;
public int Age;
public string FavoriteColor;
public int FavoriteNumber;
}
然后,写入和读取文件的示例:
static void Main(string[] args)
{
Console.Write("Name:");
string name = Console.ReadLine();
//Get age.
Console.Write("Age:");
int age = Convert.ToInt16(Console.ReadLine());
//Get favorite color.
Console.Write("Favorite color:");
string color = Console.ReadLine();
//Get favorite number.
Console.Write("Favorite number:");
int number = Convert.ToInt16(Console.ReadLine());
//Save to stats.txt
string path = @"C:\Users\max\OneDrive\Desktop\Code\C#\SaveAndLoad\STATS\stats.txt";
Data data = new Data() { Name = name, Age = age, FavoriteColor = color, FavoriteNumber = number };
using (System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.OpenOrCreate))
{
System.Xml.Serialization.XmlSerializer xml = new System.Xml.Serialization.XmlSerializer(data.GetType());
xml.Serialize(fs, data);
}
// read from stats.txt into a Data object
Data data2;
using (System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open))
{
System.Xml.Serialization.XmlSerializer xml = new System.Xml.Serialization.XmlSerializer(typeof(Data));
data2 = xml.Deserialize(fs) as Data;
}
// do something with "data2":
Console.WriteLine("Name: " + data2.Name);
Console.WriteLine("Age: " + data2.Age);
Console.WriteLine("Color: " + data2.FavoriteColor);
Console.WriteLine("Number: " + data2.FavoriteNumber);
Console.Write("Press Enter to Quit");
Console.ReadLine();
}
生成的XML文件:
<?xml version="1.0"?>
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>Mike</Name>
<Age>47</Age>
<FavoriteColor>Blue</FavoriteColor>
<FavoriteNumber>42</FavoriteNumber>
</Data>
迈克
47
蓝色
42
如果您创建了另一个包含
List
的类,则可以使用非常相似的代码以相同的方式序列化该类。有许多不同的解决方案
正如我在您的示例中所看到的,它不一定是一个列表,您的目标只是保存和读取文件中的信息
我将演示一个使用类和JSON的解决方案
首先为对象创建一个类:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string FavoriteColor { get; set; }
public int FavoriteNumber { get; set; }
}
写:
// Create an instance of `Person`
var person = new Person
{
Name = name,
Age = age,
FavoriteColor = favoriteColor,
FavoriteNumber = favoriteNumber
};
// Serialize this object as a JSON
var serializedPerson = JsonConvert.SerializeObject(person);
// Write in the file
File.WriteAllText(path, serializedPerson);
全文如下:
// Reads the file
var serializedPerson = File.ReadAllText(path);
// Deserialize the object
var person = JsonConvert.DeserializeObject<Person>();
//读取文件
var serializedPerson=File.ReadAllText(路径);
//反序列化对象
var person=JsonConvert.DeserializeObject();
有很多不同的解决方案可以做到这一点
正如我在您的示例中所看到的,它不一定是一个列表,您的目标只是保存和读取文件中的信息
我将演示一个使用类和JSON的解决方案
首先为对象创建一个类:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string FavoriteColor { get; set; }
public int FavoriteNumber { get; set; }
}
写:
// Create an instance of `Person`
var person = new Person
{
Name = name,
Age = age,
FavoriteColor = favoriteColor,
FavoriteNumber = favoriteNumber
};
// Serialize this object as a JSON
var serializedPerson = JsonConvert.SerializeObject(person);
// Write in the file
File.WriteAllText(path, serializedPerson);
全文如下:
// Reads the file
var serializedPerson = File.ReadAllText(path);
// Deserialize the object
var person = JsonConvert.DeserializeObject<Person>();
//读取文件
var serializedPerson=File.ReadAllText(路径);
//反序列化对象
var person=JsonConvert.DeserializeObject();
最简单的方法是使用BinaryWriter或BinaryReader,但您也可以简单地写出每种类型的文本表示形式,并在读回时对其进行解析,就像您现在使用Convert.ToInt16所做的那样。您还可以使用序列化和反序列化。提示:int
是Int32
不是Int16
。顺便说一句,您可以使用int.Parse()
。这是否回答了您的问题?如果答案有用,您可以将其标记为已接受。最简单的方法是使用BinaryWriter或BinaryReader,但您也可以简单地写出每种类型的文本表示形式,并在读回时对其进行解析,就像您现在使用Convert.ToInt16所做的那样。您还可以使用序列化和反序列化。提示:int
是Int32
不是Int16
。顺便说一句,您可以使用int.Parse()
。这是否回答了您的问题?你可以将一些答案标记为已接受,以防有用。