【发布时间】:2014-12-10 18:39:36
【问题描述】:
保存或读取文件,有什么问题?
这会创建空文件。
我很困惑,请告诉我如何正确地做到这一点。如您所见,我正在尝试保存一个类,然后读回它们的数组。
public void savePlayers()
{
string path = @"scores.dat";
if (File.Exists(path))
{
File.Delete(path);
}
try
{
using (FileStream fs = File.Create(path))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, player.players);
fs.Close();
}
}
catch
{
MessageBox.Show("Failed to save data", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
public void readPlayers()
{
string path = @"scores.dat";
player.players.Clear();
try
{
using (FileStream fs = File.OpenRead(path))
{
BinaryFormatter formatter = new BinaryFormatter();
player.players.Add((Player)formatter.Deserialize(fs));
fs.Close();
}
}
catch
{
MessageBox.Show("Failed to read stats file", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
【问题讨论】:
-
仅供参考
fs.Close();是不必要的。将流包装在using语句中会为您解决这个问题。为了解决您的问题,它可能会保存为空,因为您保存的是空的。我假设formatter的类型是XmlSerializer?你能分享那是什么吗?你能分享一下players.players是什么并展示你是如何填充它的吗?如果您遇到异常,您的文件将被创建但为空。你有例外吗?您还需要表明您正在调用这些方法。 -
@tnw:
formatter的类型是BinaryFormatter,而不是XmlFormatter... -
@Sjips 哎呀,不知道我是怎么错过的。谢谢。我的其余评论仍然有效:)
标签: c# winforms binary-serialization