Есть ли O (1) способ в Windows API для объединения 2 файлов? - PullRequest
3 голосов
/ 11 января 2009

Есть ли в Windows API способ O (1) объединить 2 файла?

O (1), что нет необходимости читать весь второй файл и записывать его в файл, к которому вы хотите добавить. Таким образом, в отличие от O (n) байтов обрабатываются.

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

Ответы [ 3 ]

4 голосов
/ 11 января 2009

Если «новый файл» будет прочитан только вашим приложением, то вы можете удалить его без фактического объединения их на диск.

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

Если это не сработает для вас, и вы используете Windows, вы всегда можете создать точку повторного анализа и фильтр файловой системы. Я верю, что если вы создадите «мини-фильтр», он будет работать в пользовательском режиме, но я не уверен.

Вы можете найти больше информации об этом здесь:

http://www.microsoft.com/whdc/driver/filterdrv/default.mspx

3 голосов
/ 11 января 2009

Нет, нет.

Лучшее, на что вы можете надеяться, это O (n), где n - длина самого короткого из двух файлов.

2 голосов
/ 11 января 2009

С теоретической точки зрения это возможно (на диске) при условии, что:

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