繁体   English   中英

如何在C#中获取使用流生成的文件的名称?

[英]How do I get the name of a file generated with a stream in C#?

我正在使用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选项是为了避免冲突,因为我的对象可以具有相同的标题。 现在,我需要获取我的流生成的文件名,我该如何获取它?

谢谢

首先尝试创建文件。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM