C# – 将对象保存到JSON文件

我正在写一个Windows Phone Silverlight应用程序.我想将对象保存到JSON文件.我写了下面这段代码.

string jsonFile = JsonConvert.SerializeObject(usr);
IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("users.json", FileMode.Create, isoStore);

StreamWriter str = new StreamWriter(isoStream);
str.Write(jsonFile);

这足以创建一个JSON文件,但它是空的.难道我做错了什么?这不应该将对象写入文件吗?

解决方法:

问题是你没有关闭流.

Windows中的文件I / O在操作系统级别具有缓冲区,.NET甚至可以在API级别实现缓冲区,这意味着除非您告诉类“现在我已经完成”,否则它将永远不知道何时确保这些缓冲区一直传播到盘片.

您应该稍微重写一下代码,如下所示:

using (StreamWriter str = new StreamWriter(isoStream))
{
    str.Write(jsonFile);
}

使用(…){…}将确保当代码离开块,{…}部分时,它将在对象上调用IDisposable.Dispose,在这种情况下将刷新缓冲区并关闭基础文件.

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...