首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectoryInfo在UWP项目中的使用

DirectoryInfo在UWP项目中的使用
EN

Stack Overflow用户
提问于 2017-08-19 14:34:02
回答 1查看 663关注 0票数 0

我目前正在处理一个Windows 10 UWP项目,我一直得到以下例外情况:

无法将“System.IO.FileSystemInfo[]”类型的对象强制转换为System.IO.FileSystemInfo[]类型

这就是抛出它的代码:

代码语言:javascript
复制
 DirectoryInfo dirInfo = new DirectoryInfo(path);
 FileInfo[] files = dirInfo.GetFiles(path);

路径是一个有效的路径,我多次验证它,我不知道为什么我会得到这个异常。DirectoryInfo类仍然可以在UWP应用程序中使用,还是应该使用等效的类?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-21 07:27:40

DirectoryInfo类适用于UWP。然而,它有很多的局限性。例如路径是否有效。有关更多细节,您可以参考跳过路径:坚持使用StorageFile

当我传递Second path fragment must not be a drive or UNC name参数时,它会引发path异常。我找到了下面的描述。

要与文件名匹配的搜索字符串。此参数可以包含有效的文字路径和通配符(*和?)的组合。字符(见备注),但不支持正则表达式。默认模式是"*",它返回所有文件。

所以我修改了searchPattern,如下所示,它运行得很好。

代码语言:javascript
复制
string root = Windows.ApplicationModel.Package.Current.InstalledLocation.Path;
string path = root + @"\Assets\Media";

DirectoryInfo dirinfo = new DirectoryInfo(path);
FileInfo[] files = dirinfo.GetFiles("head.*");

我不知道为什么我会得到这个例外。DirectoryInfo类仍然可以在UWP应用程序中使用,还是应该使用等效的类?

在UWP中查询文件的最佳做法是使用文件夹选择器选择一个文件夹并使用GetFilesAsync方法枚举所有文件。例如:

代码语言:javascript
复制
var picker = new Windows.Storage.Pickers.FolderPicker();
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
picker.FileTypeFilter.Add("*");
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
var folder = await picker.PickSingleFolderAsync();
if(folder != null)
{
    StringBuilder outputText =  new StringBuilder();
    var query = folder.CreateFileQuery();
    var files = await query.GetFilesAsync();
    foreach (StorageFile file in files)
    {
        outputText.Append(file.Name + "\n");
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45772750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档