字符串数组中的文件名 c# Universal Windows
Posted
技术标签:
【中文标题】字符串数组中的文件名 c# Universal Windows【英文标题】:Filenames in string array c# Universal Windows 【发布时间】:2016-08-04 04:39:36 【问题描述】:我正在开发通用 Windows 平台应用程序。 要继续,我需要将一个文件夹中所有文件的文件名放入一个字符串数组中。 获取文件方法在 UWP 中不起作用。我尝试了 Filepicker 和 Storagefolder,但我不知道如何将它放入字符串数组中。
// C#
FolderPicker picker= new FolderPicker();
picker.FileTypeFilter.Add("*"); StorageFolder x = await picker.PickSingleFolderAsync();
Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", x);
string[] files = Directory.GetFiles(@"path\to\Assets");
textBlock.Text = files.Length.ToString();
【问题讨论】:
在此处添加您现有的代码,这样我们就有了一些可取之处。 【参考方案1】:您可以使用Directory.EnumerateFiles
、System.IO.Path.GetFileName
和 LINQ:
string[] allFileNames = Directory.EnumerateFiles(dirPath)
.Select(System.IO.Path.GetFileName)
.ToArray();
【讨论】:
我无权访问此文件夹。我尝试使用 Directory.GetFiles(dirPath),当我检查长度时它显示为 0。这些 Windows 应用程序是沙盒化【参考方案2】:我无权访问此文件夹。我尝试使用 Directory.GetFiles(dirPath),当我检查长度时它显示为 0。这些 Windows 应用程序是沙盒的。
是的,你是对的,在 UWP 应用中,我们可以在后面的代码中访问应用的本地文件夹或音乐库等特殊库,否则我们需要使用文件夹/文件选择器让用户选择访问文件夹/文件。
我尝试过使用 Filepicker 和 Storagefolder,但我不知道如何将其放入字符串数组中。
这是一个正确的方向,您可以使用StorageFolder.GetFilesAsync 方法来完成这项工作,如下所示:
private string[] filename;
private async void Button_Click(object sender, RoutedEventArgs e)
FolderPicker picker = new FolderPicker();
picker.SuggestedStartLocation = PickerLocationId.ComputerFolder;
picker.FileTypeFilter.Add("*"); //match all the file format
StorageFolder folder = await picker.PickSingleFolderAsync();
if (folder != null)
var subFiles = await folder.GetFilesAsync();
filename = new string[subFiles.Count()];
for (int i = 0; i < subFiles.Count(); i++)
filename[i] = subFiles.ElementAt(i).DisplayName;
textBlock.Text = textBlock.Text + "+" + filename[i]; //show the file name in a textblock
使用picker.FileTypeFilter.Add("*")
可以使过滤器匹配文件夹中所有类型的文件,但这些文件不会显示在选择器界面中。
【讨论】:
以上是关于字符串数组中的文件名 c# Universal Windows的主要内容,如果未能解决你的问题,请参考以下文章