Как получить имя файла, сгенерированного потоком в С#?
Я создаю приложение для Windows 8 с XAML/С#. Я сохраняю .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 задается во избежание коллизий, потому что мои объекты могут иметь один и тот же заголовок. Теперь мне нужно получить имя файла, генерируемого моим потоком, как я могу его получить?
Спасибо
Ответы
Ответ 1
Сначала попробуйте создать файл.
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