字符串数组中的文件名 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.EnumerateFilesSystem.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的主要内容,如果未能解决你的问题,请参考以下文章

使用数组 C# WPF 中的项目填充列表框

C# 分解文件路径目录

如何在 C# 中读取文本文件中的多行? [复制]

如何在 C# 中读取文本文件中的多行? [复制]

字符串 [] 数组中的 C# 内联条件

c#中的字符串拆分返回一个空数组