как мультиплатформно размещать файлы

Модератор: Модераторы

как мультиплатформно размещать файлы

Сообщение DedFrend » 24.02.2023 17:32:39

А куда надо помещать файлы, чтобы по одному имени его нашли и в винде и в линух?
Хочу пояснить,если кто-то думает, что мне поиском лень пользоваться.
Пользовался. Но не смог так сформулировать, чтобы меня правильно поняли.
Я час где-то сидел в яндексе, но нарыл только горы grep и find. Раз пять формулировал, но все то же самое
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: как мультиплатформно размещать файлы

Сообщение Sharfik » 25.02.2023 02:06:15

Верно - ничего не понятно. Системы с разной архитектурой подхода к вопросу хранения файлов и взаимодействия с человеком. В Win наплевать на регистр названия, в Nix(насколько помню) нет. В остальном там бардак, когда баловался с nix, то понял что документация по linux одно, а каждый дистрибутив немного отличается в плане директорий и правил хранения. В любом случае не зная пути по имени файл ищется в Win в начале рядом с программой, дальше в паре системных папок и все. У nix хз. Смысл искать файл непойми где?
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 756
Зарегистрирован: 20.07.2013 01:04:30

Re: как мультиплатформно размещать файлы

Сообщение DedFrend » 25.02.2023 12:07:07

Попробуем конкретизировать - ubuntu
Никак не ожидал, что в линух нет стандартных папок для размещения файлов.
И даже обсуждений нигде не попадалось. Вероятно "в целях борьбы с дырами безопасности".
На борьбу за безопасность любую хрень списать можно
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: как мультиплатформно размещать файлы

Сообщение delphius » 25.02.2023 14:57:17

DedFrend писал(а):Попробуем конкретизировать - ubuntu
Никак не ожидал, что в линух нет стандартных папок для размещения файлов.
И даже обсуждений нигде не попадалось. Вероятно "в целях борьбы с дырами безопасности".
На борьбу за безопасность любую хрень списать можно


А можете конкретизировать ещё детальнее, до конкретного сценария использования такого поиска в вашей ситуации?
Что такое "стандартных папок для размещения файлов"? Каких файлов?

Есть переменные окружения и в Linux и в Windows. В частности PATH, которые указывают пути, по которым система ищет исполняемые файлы (команды), вне зависимости от текущей директории вызова.
Есть "домашняя" директория текущего пользователя и там и там HOME/USERPROFILE, в которую текущий пользователь имеет возможность записи любых файлов, под универсальное понимание "стандартной папки" эта переменная как раз больше всего подходит.

Если речь заходит про поиск, как функцию, без привязки к конкретным файлам, то в Windows есть механизм Windows Search, суть которого в индексации файлов по указанным расположениям с возможностью последующего поиска, а также, с помощью фильтров, поиска по содержимому индексированных файлов.
В Linux системы локального поиска тоже есть, например Beagle , Tracker , Recoll

Есть еще поиск без индексации в обеих системах, путем рекурсивного перебора содержимого папок от указанной, как вы выше сказали с помощью find (файлы),grep (содержимое) и т.д.

Это подходы с двух сторон, но только четко понимая решаемую задачу (конкретный сценарий использования), можно что-то рекомендовать.
Последний раз редактировалось delphius 25.02.2023 16:19:48, всего редактировалось 3 раз(а).
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: как мультиплатформно размещать файлы

Сообщение DedFrend » 25.02.2023 16:05:26

Каюсь и благодарю. Я натурально про PATH забыл. Хотя знал и даже пользовался. Вот переклинило...
Мне не поиск файлов нужен был . Про поиск мне сотни ссылок вывалили. А просто я программе
открываю файл. И чтобы оно работало и в винде и в линукс одинаково надо чтобы
имя было без полного пути. В винде достаточно просто положить рядом с программой.
А где линукс ищет я понять не мог, а про PATH вылетело из головы. Как там эта болезнь называется?...
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: как мультиплатформно размещать файлы

Сообщение delphius » 25.02.2023 16:18:39

DedFrend писал(а):Как там эта болезнь называется?...

Правильная постановка задачи :mrgreen:
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: как мультиплатформно размещать файлы

Сообщение svk12 » 25.02.2023 23:00:08

delphius писал(а):И чтобы оно работало и в винде и в линукс одинаково надо чтобы
имя было без полного пути.

Я для этого завёл в программе переменную, которая инициализируется как:
Код: Выделить всё
WorkDir:=GetAppConfigDir(False);

Под Линуксом она получает значение "/home/UERNAME/.config/APPNAME", под Виндой что-то вроде "c:\Users\USERNAME\AppData\Local\APPNAME" .
Там и храню рабочие файлы.
DedFrend писал(а):В винде достаточно просто положить рядом с программой.

Если текущий пользователь имеет права администратора. Иначе могут быть проблемы с записью.
svk12
постоялец
 
Сообщения: 407
Зарегистрирован: 09.06.2008 18:42:47

Re: как мультиплатформно размещать файлы

Сообщение delphius » 26.02.2023 00:25:35

svk12 писал(а):GetAppConfigDir(False);

А как побороли явные проблемы с возможным русским именем пользователя и/или программы?
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: как мультиплатформно размещать файлы

Сообщение SSerge » 26.02.2023 07:21:39

DedFrend писал(а):В винде достаточно просто положить рядом с программой


Неправильно. У вас в ярлыке программы вообще то указывается два предмета - путь к исполняемому файлу и folder, который будет являться рабочим при запуске программы. И они могут быть разными. Искать файл программа будет в той папке, которая была для нее текущей при старте.

DedFrend писал(а):А где линукс ищет я понять не мог, а про PATH


он в PATH не ищет файлы, не являющиеся исполняемыми. И более того, текущий каталог не является стартовой точкой обнаружения (это как раз потому надо запускать программу из текущего каталога в терминала как ./progrаm не просто program - потому что во втором случае это будет папка корневого каталога, заданная в системе для пользователя, из под которого производится запуск). Поэтому, хотите читать файл из того же каталога, в котором лежит программа - определите путь до этой программы, присоедините к имени файла и читайте. Но помните, что права доступа в таком случае вам могут давать что-то запустить из папки, но не давать возможности что-то читать из неё. :)
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: как мультиплатформно размещать файлы

Сообщение DedFrend » 26.02.2023 18:58:29

SSerge накаркал... :( Натурально, неисполняемый файл все равно не видит.
Плюнул и имя файла вынес в ini файл. Пусть они будут разные в разных осях.
Но все равно удивляюсь, что за проблемы на ровном месте
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: как мультиплатформно размещать файлы

Сообщение svk12 » 26.02.2023 22:23:54

delphius писал(а):А как побороли явные проблемы с возможным русским именем пользователя и/или программы?

Виндовая версия работает в организации, админ которой даёт юзерам логины исключительно на латинице.
Когда-то пробовал
Код: Выделить всё
GetAppConfigDirUTF8(False);
- не работало. Но с тех пор много воды утекло - могли и починить.
svk12
постоялец
 
Сообщения: 407
Зарегистрирован: 09.06.2008 18:42:47


Вернуться в Файловая система

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru