Как я могу получить файл для фильтрации из getFiles () в Visual C# - PullRequest
0 голосов
/ 13 февраля 2020

Это не похоже ни на что, опубликованное в inte rnet, я являюсь автором этого проекта, который был создан около 8 лет go. Этот проект для моей дипломной работы сегодня для моей степени магистра. Мне нужно улучшить GetFiles () для фильтрации разрешенных типов файлов, так как этот проект предназначен для моей школы. Это программное обеспечение действует как TinEye или Turnitin, проверяя сходство изображения, которое нужно проверить на плагиат.

Это ошибка, которую я получаю сейчас. «Недостаточно памяти», см. Изображение в ссылке

Error Message

Я уже выяснил причину проблемы, но не могу найти способ ее решения.

Я опубликую файл моего проекта здесь , вы можете проверить его, чтобы увидеть строку кода.

В файле Form1.cs в номере строки 88 в нем указан код

_fileArray= System.IO.Directory.GetFiles(fbd.SelectedPath, "\*.\*",
                                  System.IO.SearchOption.AllDirectories);

Я не могу найти способ отфильтровать типы файлов, которые изначально были сохранены в переменной string [] _fileArray

Я не могу повторить весь проект, так как у меня мало времени для крайнего срока, я буду признателен за любую помощь, чтобы исправить ошибку.

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Вы должны использовать Directory.EnumerateFiles () , который возвращает IEnumerable<string>, который является ленивым.

Не храните их в массиве или списке. Просто повторите это напрямую.

Если вам необходимо представить их в виде списка / списка и повторение занимает много времени, сохраните имена файлов в текстовом файле, который можно загружать проще и быстрее.

var files = Directory.EnumerateFiles(fbd.SelectedPath, "*.*", SearchOption.AllDirectories);

foreach(var file in files)
{
    // do your thing...
}
0 голосов
/ 13 февраля 2020

Если я правильно понимаю, вы хотите отфильтровать файлы по определенным расширениям (.jpg, .gif, et c ..).

Если это так, попробуйте этот ответ: Directory.GetFiles (dir, "* .jpg", SearchOption.AllDirectories)

найдено здесь: { ссылка }

...