Название: Учет регистра букв в именах файлов в разных ОС Отправлено: Sancho_s_rancho от Январь 18, 2010, 11:33 Программа, запущенная на линуксе в автоматическом режиме работает с файлами, которые пишут на общий диск Windows машины. Unix-подобные ОС учитывают регистр букв, Windows игнорирует и вин. программы этим пользуются. Имена файлов и каталогов известны, но из разных источников(сгенерированные разными вин. программами) они приходят в непредсказуемом регистре. К примеру: Linux программа должна обработать файл abcd.bin пришедший на общий диск с вин. машины. Вин машины присылают имя файла с произвольным регистром( /bla-bla/Abcd.bin, /BLA-BLA/ABCD.bin) и сам файл создается с произвольным регистром. Результат для Linux: файл не найден. Исправить поведение программ на вин. машинах не представляется возможным. Каким образом лучше реализовать операции над файлами в программе на линукс системе. Понятно, что это будут костыли, но необходимо какое-то временное решение.
Название: Re: Учет регистра букв в именах файлов в разных ОС Отправлено: Пантер от Январь 18, 2010, 11:38 Получить список файлов и регистронезависимо сравнить с нужным названием.
Название: Re: Учет регистра букв в именах файлов в разных ОС Отправлено: Sancho_s_rancho от Январь 18, 2010, 11:55 Это несколько проблематично.
Вин. программа создала файл /bla/abcd.bin и сказала линукс программе /BLA/Abcd.bin Придется "вручную" разбирать всю строку, т.е. все вложенные каталоги и только потом уж файл. Неприятно. Название: Re: Учет регистра букв в именах файлов в разных ОС Отправлено: lit-uriy от Январь 18, 2010, 17:53 С помощью QDir получать списки файлов, в нём смотреть:
QDir::CaseSensitive QDir::entryInfoList QDir::entryList Название: Re: Учет регистра букв в именах файлов в разных ОС Отправлено: nixman05 от Январь 18, 2010, 18:19 Это несколько проблематично. Вин. программа создала файл /bla/abcd.bin и сказала линукс программе /BLA/Abcd.bin Придется "вручную" разбирать всю строку, т.е. все вложенные каталоги и только потом уж файл. Неприятно. Код
Вместо toLower можно использовать toUpper(). |