Я пытаюсь реализовать файловую систему на основе Fuse с помощью Node.js на Mac. Я использую fuse-native (https://github.com/fuse-friends/fuse-native) для монтирования файловой системы.
У меня есть каталог в моей локальной файловой системе, который я хочу отразить с помощью смонтированной файловой системы. Поэтому, если я сохраню файл в смонтированной файловой системе, он должен сохраниться в зеркальном каталоге, а если я загружу файл в зеркальный каталог, я смогу открыть его в смонтированном каталоге.
Я реализовал все основные обратные вызовы предохранителей, такие как read, readdir, write, getattr, chmod, chown, mknod, mkdir, rmdir.
Пока я могу создавать, обновлять, удалять, сохранять текстовый файл в смонтированной файловой системе. Когда я пытаюсь открыть любой файл MS Word, PDF или Pages из смонтированной файловой системы (которая присутствует в зеркальном каталоге), он дает мне
Word found unreadable content in file.docx. Do you want to recover the contents of this document? If you trust the source of this document, click Yes.
и когда я нажимаю восстановить, он успешно может восстановить его.
Я не уверен, что происходит, но не могу открыть файл Word.
Моя функция чтения выглядит так (я читаю и открываю из зеркального каталога): fs — файловая система узла
fs.read(fd, buf, 0, buf.length, null, (err, bytesRead, buffer) => {
if (err) {
Logger.info(err.message);
return cb(Fuse.ENOENT);
}
const part = buffer.slice(position, position + bytesRead);
part.copy(buffer);
return cb(bytesRead);
});
и открыть:
const open = (path: string, flags: number, cb: Function) => {
// Logger.info('In Open');
try {
const fd = fs.openSync(
`/Users/xyz/Desktop/Fuse${path}`,
toFlag(flags)
);
return cb(0, fd);
} catch (err) {
Logger.info(err.message);
return cb(Fuse.ENOENT);
}
};
Любая помощь будет оценена по достоинству. Спасибо!