Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
1 / 1 / 0
Регистрация: 26.11.2017
Сообщений: 6
.NET 4.x

Сортировка файлов в папке

10.12.2017, 23:51. Показов 5343. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно получить файлы из папки в том порядке, в котором они отсортированы. GetFiles и EnumerateFiles просто возвращают файлы, сортирую по имени, даже если файлы отсортированы по дате. Следовательно, вопрос: как узнать, в каком порядке отсортированы файлы в данной папке, что бы затем их отсортировать уже в программе.
Средство просмотра изображений Windows в пример. Эта чудо программа листает картинки в том же порядке, в каком они находятся в папке.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.12.2017, 23:51
Ответы с готовыми решениями:

Сортировка файлов в заданной папке
Здравствуйте, всем. Я новичек, пишу сейчас just for fun, и у меня появилась идея написать программу которая сортирует файлы в папке. Я идею...

Сортировка файлов в папке по именам
Нашел пример отсортировать файлы в папке по времени и затем вывести на эран, работает пример. http://f9r.ru/sortarrrrr.html А как...

Вывод списка .txt файлов в папке и последующее открытие файлов
Ребята, подскажите или помогите реализовать программу, которая допустим при помощи OpenFileDialog, при указании пути к папке, выводила на...

9
Эксперт .NET
 Аватар для Usaga
14303 / 9388 / 1354
Регистрация: 21.01.2016
Сообщений: 35,397
11.12.2017, 06:53
OxxxHayFay, файлы в папке лежат в произвольном порядке и никак не отсортированы (скорее всего они располагаются в том порядке, в каком заносились в файловую таблицу в ФС). "Чудо-программа" читает файлы в промежуточный массив в памяти, где и сортирует по тем критериям, по каким находит нужным. Соответственно, совершенно наплевать в каком порядке файлы перечисляются функциями GetFiles и EnumerateFiles.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
11.12.2017, 12:51
OxxxHayFay, определить порядок сортировки в Проводнике можно с помощью IFolderView2::GetSortColumns. В блоге Реймонда Чена есть пример на C++ - Determining how each Explorer window is sorted. Он это делает для всех открытых окон Провододника. Чтобы получить поведение как у Windows Image Viewer нужно, по идее, написать расширение оболочки которое будет определять порядок сортировки в окне где оно запущено и передавать эти параметры основной программе.
0
1 / 1 / 0
Регистрация: 26.11.2017
Сообщений: 6
11.12.2017, 16:09  [ТС]
Спасибо, но мне удалось найти решение попроще. Вот, как я это сделал.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Вернет ShellFolderView для окна, из которого я открыл свою прогу
private static ShellFolderView GetShellFolderView(string path)
{
    Shell shell = new ShellClass();
    ShellWindows shellWindows = (ShellWindows)shell.Windows();
    Uri fileUri = new Uri(path);
    foreach (ShellBrowserWindow shellWindow in shellWindows)
    {
        string s = shellWindow.LocationURL;
        Uri windowUri = new Uri(s);
        if (windowUri.AbsolutePath == fileUri.AbsolutePath)
        {
            return (ShellFolderView)shellWindow.Document;
        }
    }
    return null;
}
Затем это ShellFolderView используется следующим образом
C#
1
2
3
4
5
6
FileInfo file = new FileInfo(path);
var folderView = GetShellFolderView(file.DirectoryName);
 
//Вернет строку вида: "prop:System.ItemDate;", если файлы в папке отсортированы по дате. Если по убыванию, 
//то добавляется минус, вот так "prop:-System.ItemDate;". Зная эту информацию, сортируем уже как хотим.
string sortProperty = folderView.SortColumns;
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
11.12.2017, 16:40
OxxxHayFay, если одна и та же папка открыта в разных окнах, то код может вернуть неверный результат.
0
1 / 1 / 0
Регистрация: 26.11.2017
Сообщений: 6
12.12.2017, 17:18  [ТС]
OwenGlendower, Если в обоих окнах файлы отсортированы одинаково, то не имеет значения, сколько окон открыто, результат будет правильный. Однако, если порядок сортировки разный, то мы получим значение SortColumns из того окна, что было открыто раньше(Но это не точно).
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
12.12.2017, 17:20
Цитата Сообщение от OxxxHayFay Посмотреть сообщение
если порядок сортировки разный, то мы получим значение SortColumns из того окна, что было открыто раньше(Но это не точно).
Именно этот сценарий я и имел в виду.

Добавлено через 34 секунды
Что нет гарантии получения правильного значения
0
Эксперт .NET
 Аватар для Usaga
14303 / 9388 / 1354
Регистрация: 21.01.2016
Сообщений: 35,397
12.12.2017, 17:24
OxxxHayFay, есть какая-то объективная причина мешающая вам отсортировать список файлов по нужным вам критериям? Или вы из любителей фигнёй пострадать?)
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
12.12.2017, 17:34
Usaga, у ТС нет сложностей с сортировкой. Вопрос о том как "унаследовать" параметры сортировки от окна Проводника. Нормальная задача.
0
Эксперт .NET
 Аватар для Usaga
14303 / 9388 / 1354
Регистрация: 21.01.2016
Сообщений: 35,397
12.12.2017, 17:39
А, ок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.12.2017, 17:39
Помогаю со студенческими работами здесь

Копирование файлов с переименованием в случае совпадения имён перемещаемых и имеющихся в папке назначения файлов
Добрый день. Помогите создать bat файл. Смысл в чем есть папка загрузки на компьютере с нее файлы и папки содержащиеся в ней должны...

Копирование файлов с переименованием в случае совпадения имён копируемых и имеющихся в папке назначения файлов
Доброго времени суток. Убедительная просьба, помогите пожалуйста решить задачу. Существует исходный путь (SrcDir), который идет до...

Сравнение файлов в папке и создание папок с именами файлов
Нужно пройтись по папке, если есть картинка с названием, но нет папки с таким же названием, создать папку с названием картинки и перенести...

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

Как найти названия файлов в текстовом файле, а потом осуществить поиск в папке файлов по этим именам?
Здравствуйте. Подскажите, пожалуйста. У меня есть текстовый файл, где находятся имена файлов и есть папка, где много всяких файлов, в том...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru