2013-04-23 11 views
10

私はXAML/C#でWindows 8メトロアプリを構築しています。私はこのように、ストリームで私のデータ構造を.xmlファイルを保存しています:C#でストリームで生成されたファイルの名前を取得するにはどうすればよいですか?

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 

は明らかに

Windows.Storage.ApplicationData.Current.LocalFolder 

GenerateUniqueNameに設定StorageFolderのobjectyです私のオブジェクトは同じタイトルを持つことができるので、衝突を避けるためにオプションが設定されています。今、ストリームが生成したファイル名を取得する必要がありますが、どうすれば入手できますか?

ありがとうございます

+3

すでにストリームオブジェクトのすべてのプロパティをデバッグしてチェックしましたか?具体的なクラスとすべての利用可能なフィールド?私は、そこにあるはずのベースストリームなどが過去に同様の問題を抱えていたと信じています。 –

+0

MyObjectとは何ですか?MyObject.Titleプロパティはどのように設定されていますか? – Abbas

答えて

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); 
} 
2

OpenStreamForWriteAsync方法では、この情報に簡単にアクセスできないようです。

StorageFile file = await App.LocalStorage.CreateFileAsync(...); 
using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite)) 
    // do stuff, file name is at file.Name 
関連する問題