Russian Qt Forum

Программирование => Общий => Тема начата: lit-uriy от Июль 14, 2017, 12:03



Название: Как создать виртуальный файл?
Отправлено: lit-uriy от Июль 14, 2017, 12:03
Некоторые программы (например, САПР), хранят свои данные в виде файлов, да ещё и блокируют доступ к ним, когда файл в программе открыт.

Конечная цель: чтобы данные хранились в БД и работа шла именно с БД (можно через промежуточное приложение), а не с файлами.

Идея: сделать какую-то штуку, чтобы программа думала, что работает с файлом, а на деле это некий "тунель" к другой программе, которая уже работает с БД.

Как подобное может быть устроено?
Может нужно создать некую виртуальную ФС?

Программы считаем неизменяемыми.


Название: Re: Как создать виртуальный файл?
Отправлено: qate от Июль 14, 2017, 15:41
а зачем файлы хранить в бд? это может быть не оптимально https://wiki.postgresql.org/wiki/BinaryFilesInDB


Название: Re: Как создать виртуальный файл?
Отправлено: lit-uriy от Июль 19, 2017, 10:59
а мне и не нужно хранить файлы в БД, я про это и не упоминал


Название: Re: Как создать виртуальный файл?
Отправлено: Igors от Июль 19, 2017, 11:22
а мне и не нужно хранить файлы в БД, я про это и не упоминал
Ну как же
Конечная цель: чтобы данные хранились в БД и работа шла именно с БД
Или это просто "для примера"? Ладно, ну с читающим все понятно - наследоваться от QIODevice и все дела. Но дальше все зависит от того какой "туннель" планируете, где и что хранить и.т.д.  Здесь все "по задаче", напр если данные в др приложении то может шаред мемори или хваленые пайпы


Название: Re: Как создать виртуальный файл?
Отправлено: Alex Custov от Июль 20, 2017, 03:29
Не кроссплатформенно: FUSE. Написать всё придётся самому, то есть весь промежуточный интерфейс БД <-> файлы


Название: Re: Как создать виртуальный файл?
Отправлено: lit-uriy от Июль 20, 2017, 14:14
а мне и не нужно хранить файлы в БД, я про это и не упоминал
Ну как же
Конечная цель: чтобы данные хранились в БД и работа шла именно с БД
Или это просто "для примера"?
Выделил жирным, нет там фразы "хранить файлы в БД"

... какой "туннель" планируете ...
ни какой не планирую, а именно спрашиваю:
Как подобное может быть устроено?
Может нужно создать некую виртуальную ФС?


Название: Re: Как создать виртуальный файл?
Отправлено: lit-uriy от Июль 20, 2017, 14:20
Не кроссплатформенно: FUSE. Написать всё придётся самому, то есть весь промежуточный интерфейс БД <-> файлы
Алекс, вот это уже что-то близкое, но винда (никуда от неё не денешься) на первом месте.

Я как-то сталкивался с Компас 3D, ломаным, он был сделан кем-то и как-то на основе VMWare - запускается один единственный екзкшник, из запущенного открываешь нужные файлы.
НО
интересно, что из этого Компаса файловая система выглядит иначе (в диалогах "Открыть/сохранить"), в ней ещё какой-то диск видно, в котором папка "Program Files", а в ней "Компас", хотя на деле этого диска в системе нет.

Это воспоминание меня и натолкнуло на мысль, что можно каким-то образом обмануть программу, чтобы она думала, что работает с файлом.