Russian Qt Forum

Qt => Общие вопросы => Тема начата: Sancho_s_rancho от Январь 18, 2010, 11:33



Название: Учет регистра букв в именах файлов в разных ОС
Отправлено: 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
Придется "вручную" разбирать всю строку, т.е. все вложенные каталоги и только потом уж файл. Неприятно.

Код
C++ (Qt)
QString createdFile;
QString sendedFile;
 
if (createdFile.toLower()==sendedFile.toLower())
{
  //do task
}
 
 

Вместо toLower можно использовать toUpper().