10

我正在使用 XAML/C# 构建 Windows 8 Metro 应用程序。我正在使用流保存我的数据结构的 .xml 文件,如下所示:

XmlSerializer serializer = new XmlSerializer(typeof(MyObjectType));

using (var stream = await App.LocalStorage.OpenStreamForWriteAsync(MyObject.Title + ".xml", Windows.Storage.CreationCollisionOption.GenerateUniqueName))
    serializer.Serialize(stream, MyObject);

在哪里:

App.LocalStorage

显然是一个 StorageFolder 对象设置为

Windows.Storage.ApplicationData.Current.LocalFolder

设置 GenerateUniqueName 选项是为了避免冲突,因为我的对象可以具有相同的标题。现在,我需要获取我的流生成的文件名,我该如何获取呢?

谢谢

4

2 回答 2

10

尝试先创建文件。

var sourceFileName = MyObject.Title + ".xml";
StorageFile storageFile = await App.LocalStorage.CreateFileAsync(sourceFileName, Windows.Storage.CreationCollisionOption.GenerateUniqueName);

using (var stream = await storageFile.OpenAsync(FileAccessMode.ReadWrite))
{
    serializer.Serialize(stream, MyObject);
}
于 2013-04-23T16:04:48.987 回答
2

OpenStreamForWriteAsync方法似乎没有为您提供任何简单的方法来访问此信息。您可以切换到以另一种方式访问​​它:

StorageFile file = await App.LocalStorage.CreateFileAsync(...);
using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
    // do stuff, file name is at file.Name
于 2013-04-23T16:05:42.437 回答