Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Android > Непонятная смена названия директории.


Автор: OlegIT 24.8.2017, 08:26
Программ с библиотекой Qt, простенький браузер. Переход по файловой системе «вверх». Наблюдаю такую последовательность.
Начало с SD карты. Читаю текущую директорию
"/storage/sdcard0"
Далее вызываю процедуру cdUp, получаю
"/storage"
Следующий вход в процедуру перехода «на верх» получаю, читая текущую директорию
"/mnt"
Почему "/storage" без видимых причин преобразуется в "/mnt"? И одна и другая директория есть и они разные.

Автор: iillyyaa2033 26.8.2017, 08:49
Насколько я помню, пользовательский раздел памяти - будь то внутренняя память или карточка - монтируется по нескольким путям и создаются симлинки, причем как именно это происходит - зависит от прошивки и версии андроида.

Один из этих путей - '/mnt/sdcard', для которого может быть создан симлинк /storage.

Автор: OlegIT 28.8.2017, 21:47
А можно это как то однозначно сделать? Я по условию выхода на уровень носителей делаю некие действия, в Windows всё однозначно и хорошо, а вот с Android не получается.

Автор: Hiori 29.8.2017, 08:38
Цитата
Почему "/storage" без видимых причин преобразуется в "/mnt"

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

while( substr( myStr, 0, 4 ) == "/sto" )
что Вам стоит проверять примерно так? это избавит от проблем выхода за симлинк

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)