Как я могу заставить FindFirstFile сортировать файлы

Вы сейчас говорите две разные вещи. Одним из них является packageId, который является уникальным идентификатором для вашего приложения (используется в Google Play). И еще одна вещь - имя пакета Java . Эти два на самом деле не связаны и не должны оставаться синхронизированными.

Чтобы изменить packageId, просто отредактируйте свой файл манифеста или перейдите в диалоговое окно Project Strucure ( F4 kbd>), затем на вкладку app и отредактируйте Application Id [115] или отредактируйте каждый аромат (dev, prod и т. д. соответственно), если вы хотите, чтобы Id отличался в каждом аромате.

enter image description here

5
задан Ajay 24 May 2018 в 06:01
поделиться

4 ответа

Можно использовать Сервис Индексации для этого, но я рекомендовал бы только обработать сортировку себя при использовании FindFirstFile.

Сортировка не возможна с FindFirstFile Win32 API. Существует немного более усовершенствованный FindFirstFileEx, но даже который не позволяет сортировать.

Существует сообщение Raymond Chen на Старой Новой Вещи об ограничениях FindFirstFile.

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

10
ответ дан 18 December 2019 в 07:32
поделиться

Поскольку все указали, FindFirstFile() не делает и не может отсортировать файлы, которые это возвращает. Это работает на довольно низком уровне и возвращает файлы в порядке, который касается естественного порядка файловой системы записей каталога в каталоге.

На диске, отформатированном с FAT и FAT32, тот порядок сильно коснется порядка, в котором файлы были созданы, изменены удалениями файла и возможным повторным использованием теперь пустых слотов записи каталога. Это вызвано тем, что каталоги FAT являются (как во многих файловых системах Unix) просто упакованным массивом структур записи каталога фиксированного размера, наряду с ужасным взломом для установки длинным именам файлов, записанным в Unicode в структуру каталогов, разработанную для 8,3 имен, написанных в ASCII. В отличие от Unix, вызовы API Win32 требуются прочитать записи каталога, но это не влияет на порядок, в котором читаются записи.

На NTFS (насколько я понимаю) каталоги представлены в некотором варианте B-дерева, и естественный порядок файлов, замеченных API Win32, поэтому связан с индексацией, естественной для той структуры данных.

Вы видите различия с DIR команда в командной строке. На объеме FAT32, DIR показывает файлы в другом порядке, чем он будет, если та же самая папка будет скопирована в том NTFS. DIR /ON должен перечислить файлы в том же порядке независимо от базовой используемой файловой системы.

Никакой неотсортированный порядок, произведенный DIR, не совпадает с порядком, произведенным Windows Explorer, когда Вы сортируете по имени. (В этом отношении, DIR /ON не то же, также.)

Windows Explorer использует независимый от случая вид, который также, кажется, игнорирует некоторые знаки пунктуации в виде и пытается быть умным о числах. В частности, простое использование qsort() с stricmp() не получит тот же ответ как Проводник. Не ясно, документируется ли фактический порядок сортировки, используемый или Проводником или DIR, где-нибудь.

Например, следующий вид имен как это в DIR:

C:\temp\test> dir/on/b
aoli.txt
a-one.txt
atwo.txt
b1.txt
b10.txt
b2.txt
b-20.txt
b21.txt
b3.txt
b-4.txt

но записывая из Проводника, отсортированного в столбце Name, они находятся в этом порядке:

aoli.txt
a-one.txt
atwo.txt
b1.txt
b2.txt
b3.txt
b10.txt
b21.txt
b-4.txt
b-20.txt

Я испытываю затруднения, предполагая, что простое применяется в функции сравнения для получения последнего эффекта.

6
ответ дан 18 December 2019 в 07:32
поделиться

Win32

Во-первых, используйте findfirst, и findnext для нахождения всех файлов (помните, findfirst, и findnext поддерживают glob'ing (*.exe, и т.д.)... Загрузите файлы соответствия в список и отсортируйте его. STL поможет Вам там.

Linux

Используйте opendir () и readdir () для нахождения всех файлов в каталоге. Используйте fnmatch () на тех файлах, чтобы сделать Ваш glob'ing. И точно так же, как Windows, загрузите файлы соответствия в список и отсортируйте его.

0
ответ дан 18 December 2019 в 07:32
поделиться

Необходимо считать все имена файлов в некоторый подходящий набор и затем отсортировать их сами. Windows API не предоставляет услуг сортировки.

2
ответ дан 18 December 2019 в 07:32
поделиться