我试图将类保存到XML文档中。 该课程看起来像这样:
public class Settings
{
public LDAP LDAP;
public Miscellaneous Miscellaneous;
}
public class LDAP
{
public bool LoadLDAPData;
public bool ShowLDAPRoutingMessage;
}
public class Miscellaneous
{
public bool MinusBeforeQuestion;
public bool MinusBeforeDescription;
}
数据通过以下方式存储:
Settings MySettings = new Settings();
string MySettingsFile = @"settingsfile.xml";
...
FileStream outFile = File.Open(MySettingsFile, FileMode.OpenOrCreate);
XmlSerializer formatter = new XmlSerializer(MySettings.GetType());
formatter.Serialize(outFile, MySettings);
outFile.Close();
数据已保存,但最后有一个问题:
<Settings...>
...
</Settings>>>
你能告诉我为什么吗?
答案 0 :(得分:2)
这种情况正在发生,因为您正在编写的内容比文件的现有内容短,因此有些文本留在最后。
使用FileMode.OpenOrCreate
代替FileMode.Create
(如果文件存在,则打开文件并使其内容保持不变),而不是FileStream outFile = File.Open(MySettingsFile, FileMode.Create);
:
null
FileMode.Create
的说明:
指定操作系统应创建新文件。如果该文件已存在,则将被覆盖。这需要FileIOPermissionAccess.Write权限。 FileMode.Create等同于请求如果文件不存在,则使用CreateNew;否则,请使用截断。如果文件已存在但是是隐藏文件,则会抛出UnauthorizedAccessException异常。