2015-12-15 51 views
2

我正尝试使用Json将文件保存到UWP应用程序中的本地appdata。 代码在文件夹中创建一个文件,然后使用Json将数据对象写入它。下面是我使用的代码:在UWP appdata中Json序列化StorageFile上的最大大小

StorageFile file = await localstorage.CreateFileAsync("filename.json", CreationCollisionOption.ReplaceExisting)  
var filestream = await file.OpenStreamForWriteAsync(); 
var writer = new StreamWriter(filestream); 
var jsonwriter = new JsonTextWriter(writer); 
var serializer = new JsonSerializer(); 
serializer.TypeNameHandling = TypeNameHandling.All; 
serializer.Serialize(jsonwriter, DataObject); 

立即这似乎工作,文件似乎是成功保存,但是打开文件手动发现,正是16KB和对象的中间停止。

我一直无法找到一个大小限制的任何提及任何这些对象(流,StorageFile,JSON序列等)

任何人都可以解释为什么系列化停在16KB?

+1

writer.Flush()想到了,但我现在还不太确定。 – Biscuits

+2

也尝试处理文件流,作家等。最好的使用'使用'语句。 – Romasz

+0

这似乎已修复它。谢谢! – Sinisterpete

回答

1

使用using陈述作为Romasz建议,从而处置文件流,作家等似乎已经解决了我的问题。

新代码:

StorageFile file = await createFile("filename.json"); 
using (JsonTextWriter jsonwriter =new JsonTextWriter(new StreamWriter(await file.OpenStreamForWriteAsync()))) 
{ 
    var serializer = new JsonSerializer(); 
    serializer.TypeNameHandling = TypeNameHandling.All; 
    serializer.Serialize(jsonwriter, DataObject); 
} 

谢谢您的回答。