Объединение файлов в один. Возможно?
ЗЫ: Просто процесс открытия двух файлов и записывания их в новый занимает очень много времени, а хотелось бы склеивать файлы по 30-40 гиг за секунды.
ЗЫЫ: А в будущем может понадобиться склеивать не 2 файла, а более 5 файлов..
к примеру, файлы не всегда бывают размера кратным размеру кластера, а чаще наоборот
P.S. А зачем такие огромные файлы? Тем более склеивать их в ещё более большие? IMHO, проще хранить и оперировать именно относительно небольшими файлами.
Я уже как только не думал, но в голову ничего умного не приходит..
В кратце, если есть такая возможность надо сделать слияние двух файлов в один без их физического перемещения:-) - Наконец-то правильно сформулировал))
Я уже как только не думал, но в голову ничего умного не приходит..
В кратце, если есть такая возможность надо сделать слияние двух файлов в один без их физического перемещения:-) - Наконец-то правильно сформулировал))
Извини, что лезу не в свое дело, но я бы решал проблему с другого конца: разбивал бы файлы в процессе записи на части и составлял бы простенький журнал. Знаю на собственном опыте (http://www.speechpro.com/rus/), что так делается во многих подобных системах.
Слияние же файлов только усугубит проблему.
По сути вопроса: слить можно, но только в том случае если размер хотя бы первого файла кратен размеру кластера. Возможно есть ещё какие-то ограничения зависящие от типа используемой ФС.
Стандартных средств для этого нет. Можно поискать готовые решения, но не думаю, что их много в связи со специфичностью задачи. Самому сделать программу для решения этой задачи, думаю, не сложно, но придется действовать на уровне формата логического диска, т.е. открыть логический диск, например для win32, при помощи CreateFile("\\\\.\\C:", ....), где C: - конкретный логический диск, а далее самому редактировать таблицу ФС, что зависит от конкретной ФС.
Причем, насколько я знаю, склеивать/разрезать (в том числе) файлы можно в программах профессиональных для работы со звуком. Если же они (ты это имел в виду? ) выполняют такую работу довольно медленно, я не думаю, что можно как-то радикально, на порядки, ускорить этот процесс.
мне кажется, имеется в виду, что открытие(построение пиктограммы и анализ) в программах типа Саунд Форжа занимают гораздо больше времени, чем склеивание. А "слепое" - не знаю, что в файле, но знаю, где его конец и начало - склеивание лишено этого недостатка.
Идея интересная и, кажется, выполнимая. Фрагментированные файлы на диске(по крайне мере у меня :) ) давольно распространены. Да и в конце-то концов: не зря же в комплекте ОС Виндовс идет "дефрагментация диска" :)
Ведь на каждой ФС есть некие обозначение, что типа вот файл начался, а вот он закончился...и сделать, просто, что типа вот файл начался, а закончился он. там где заканчивается второй файл...и получится, что и двух файлов один.
Если это действительно так, значит процесс ускорить нельзя. Бы было можно - этим бы давно воспользовались фирмы-производители пакетов для работы с аудио.
я, кончено, не представляю, как устроены аудиоформаты, но мне кажется, нельзя рассматривать его как текстовый примитив. Ну, в смысле, там же еще, вполне вероятно, есть какая-то служебная информация. И, приклеив один к другому, вполне может получится, что в середине аудиотрека(сразу за окончанием первого файла) будет блок каких-то "не-аудио" данных
Мне для начала просто интересно узнать, как, допустим, NTFS определяет, что начало файла в таком месте, а конец в другом...
Потом можно попопробывать каким-нибудь хитрым образом объеденить конец одного файла и начало другого...
Насколько я понимаю, в каждой файле, в начале хранится информация о нем, там сколько кластеров он занимается итд итп..подредактировав всю нужную информацию, можно объеденить..
ЗЫ: Ну, мне так кажется.
Я понимаю, что его нельзя рассматривать как текстовый примитив...но хочется попробывать объеденить, для начала как текстовый примитив. И если получиться, значит это уже реально...а дальше уже можно будет разбираться как, что и почему:-)
Перемещение личного дела из папки "первокурсники" в папку "выпускники" занимает тоже секунды. :)
Насколько я понимаю, если мы просто объеденим конец одного файла с началом другого...
Ведь на каждой ФС есть некие обозначение, что типа вот файл начался, а вот он закончился...и сделать, просто, что типа вот файл начался, а закончился он. там где заканчивается второй файл...и получится, что и двух файлов один.
Мне для начала просто интересно узнать, как, допустим, NTFS определяет, что начало файла в таком месте, а конец в другом...
Потом можно попопробывать каким-нибудь хитрым образом объеденить конец одного файла и начало другого...
Насколько я понимаю, в каждой файле, в начале хранится информация о нем, там сколько кластеров он занимается итд итп..подредактировав всю нужную информацию, можно объеденить..
ЗЫ: Ну, мне так кажется.
Так ты возьми и посмотри формат какой-нибудь ФС, а не тыкай пальцем в небо. Для простоты возьми сначала FAT.
Можно реализовать такой вариант:
написать специальный виртуальный драйвер логического диска, который будет делать все нужные преобразования с заголовками и выполнять "склеивание" сколько угодного количества файлов и выдавать это как один файл.
з.ы. если пойти дальше, то можно и эффекты таким образом накладывать. Для этого еще дополнительную информацию хранить надо. И можно будет наделать тысячи 30 гиговых файлов с различным содержанием (утрирую конечно) :)
А вот на FAT32 нельзя сохранить файлы размером более 4Гб...
Ну, это понятно, 2*32 - 4294967296 - получается 4Гб.