Как получить все текстовые файлы из папки "C: \ Test" в UWP, используя c#? - PullRequest
0 голосов
/ 28 января 2020

Я учусь строить для windows 10, используя UWP и c#. Я пытаюсь получить количество текстовых файлов и имя всех файлов в папке, которая находится в «C: \ Test». Пожалуйста, помогите.

Ответы [ 3 ]

2 голосов
/ 28 января 2020

Я не думаю, что вы можете получить доступ к любому местоположению файла, используя путь в приложении UWP, но, используя Package.InstalledLocation , вы можете получить доступ к вашей папке установки. Поэтому для получения файлов из папки «Тест» внутри установочной директории ваш код может выглядеть так: «

StorageFolder appInstalledFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
StorageFolder assets = await appInstalledFolder.GetFolderAsync("Test");
var files = await assets.GetFilesAsync();

Но в C# приложении

Directory.GetFiles(string.path);

Метод в пространстве имен System.IO, но для подсчета указанного c типа файла мы используем следующую перегрузку того же метода:

Directory.GetFiles(string path, string search_pattern , SearchOption);

Вы можете указать опцию поиска в этой перегрузке.

  • TopDirectoryOnly : включает в поиск только текущий каталог.
  • AllDirectories : включает текущий каталог и все подкаталоги в операции поиска. Эта опция включает точки повторного анализа, такие как подключенные диски и символические c ссылки в поиске.

Для текстовых файлов вы можете указать шаблон поиска как:

// searches the current directory and sub directory
int fCount = Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories).Length;
// searches the current directory
int fCount = Directory.GetFiles(path, "*.txt", SearchOption.TopDirectoryOnly).Length;
1 голос
/ 28 января 2020

Из-за проблемы с правами доступа к файлам UWP вы не можете получить доступ к файлам напрямую с диска. Если вы хотите получить доступ к указанному файлу c, вы можете использовать FolderPicker или broadfilesystemaccess.

О FolderPicker , вам нужно получить доступ к папкам, взаимодействуя со средством выбора.

О broadfilesystemaccess , вам необходимо добавить возможность broadFileSystemAccess в манифест, и доступ настраивается в Настройки> Конфиденциальность> Файловая система , чтобы разрешить вашему приложению доступ к файловой системе.

Кроме того, о том, как получить все текстовые файлы, вы можете использовать класс QueryOptions для запроса указанного типа файла.

private async void Button_Click(object sender, RoutedEventArgs e)
    {
        StorageFolder folder = "using FolderPicker or broadFileSystemAccess to get it."
        List<string> fileTypeFilter = new List<string>();
        fileTypeFilter.Add(".txt");
        QueryOptions queryOptions = new QueryOptions(Windows.Storage.Search.CommonFileQuery.OrderByName, fileTypeFilter);
        StorageFileQueryResult queryResult = folder.CreateFileQueryWithOptions(queryOptions);
        var files = await queryResult.GetFilesAsync();
        int count = files.Count;
        foreach (var file in files) {
            string name = file.Name;
        }
    }
1 голос
/ 28 января 2020
Приложение

UWP может работать на разных windows платформах, таких как окна 10, windows мобильных устройств, поэтому путь, к которому вы пытаетесь получить доступ, может быть недоступен на всех этих платформах. Хотя вы можете получить доступ к пути к папке установки. См. Эту ссылку: Получение всех файлов в папке приложения UWP

Чего вы пытаетесь достичь, открыв папку "C: \ Test"? Если вы пытаетесь загрузить файлы и сохранить их в этом месте, вы можете вместо этого сохранить эти файлы в папке установочного каталога, а затем получить к ним доступ.

...