10

XAML/C# を使用して Windows 8 メトロ アプリを構築しています。次のように、データ構造をストリームで .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 に答える