API операционной системы для доступа к разреженным файлам? - PullRequest
1 голос
/ 04 декабря 2010

Мне нужно, по крайней мере, проверить, действительно ли существует диапазон байтов в файле или нет.

Он должен работать в основных операционных системах: Unix (Linux / MacOSX / FreeBSD) и Windows.

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

Ответы [ 2 ]

2 голосов
/ 04 декабря 2010

В Windows вы можете использовать FSCTL_GET_RETRIEVAL_POINTERS, чтобы найти сопоставление между файловыми кластерами и диском.

Соответствующий Linux (и, возможно, некоторые другие posix) IOCTL - FIBMAP

0 голосов
/ 04 декабря 2010

Я не знаю ни одного портативного способа проверки на разреженность.Чтобы создать файл с отверстиями, вам нужно seek() над отверстиями нулей, а не записывать их.Это, очевидно, работает только при создании новых файлов или расширении старых.Использование seek() для существующих нулей ничего не изменит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...