1

Файл, который выглядит как файл для сторонних приложений, но чтение / запись фильтруются через программу.

В частности, я хочу иметь файл, представляющий собой конкатенацию нескольких других файлов, которые стороннее приложение может читать / записывать. Это будет текстовый файл, а границы будут просто прагматическими отметками или аналогичным форматом. Когда третья сторона пишет в этот файл, основная программа запишет каждый раздел в исходные файлы. Когда стороннее приложение читает его, оно будет создано на лету из содержимого базовых файлов.

У меня есть несколько применений для этого; самое непосредственное - иметь возможность иметь файл NEXTSTEPS.taskpaper для TaskPaper, который состоит из множества файлов NEXTSTEPS.taskpaper из множества разных репозиториев проекта git.

Если такого инструмента не существует, я собираюсь попробовать взломать его вместе (возможно, с помощью fsevents и написанный на ruby) и буду рад любым отзывам о том, как к нему подойти.

РЕДАКТИРОВАТЬ: Мне интересно, может ли быть еще одна возможность сделать "файловую систему", используя Fuse. Я думаю, это ограничит местоположение моего "метафайла" до пути верхнего уровня /Volumes /..., но я могу с этим смириться.

1 ответ1

0

ниндзя от OP, вздох

В Linux есть слой под названием "FUSE", предназначенный для записи файловых систем в пространстве пользователя, который был портирован на различные BSD, включая OS X, ранее через MacFuse ; в настоящее время кажется, что OSXFUSE является текущей реализацией.

FUSE немного отличается от вашей идеи "метафайла" - он работает с целыми файловыми системами, а не только с отдельными файлами, поэтому API несколько низкоуровневый.

Однако это гораздо проще, чем написать модуль ядра или kext - для написания пользовательских FUSE-серверов существуют привязки Perl, Python, Ruby. Вероятно, потребуется несколько часов, чтобы написать простую файловую систему FUSE, которая обслуживает один автоматически сгенерированный файл.

(Самым популярным сервером FUSE является sshfs, который подключается к другому серверу с использованием SFTP и представляет его как локальную файловую систему, но есть еще десятки - ntfs-3g (популярный драйвер NTFS); wikipediafs (статьи Википедии представлены в виде файлов); curlftpfs ; fuseiso; ...)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .