Подтвердить что ты не робот

Как получить имя файла, сгенерированного потоком в С#?

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

Спасибо

4b9b3361

Ответ 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