Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: WinAPI и системное программирование > Файловая технология |
Автор: SoWa 26.2.2006, 19:41 |
Суть проблеммы в том, что существует некая технология в файловых системах NTFS, позволяющая дописывать в файл информацию, при этом его размер не меняется. Похоже называется файловыми потоками(FileStream- вроде не то). Если кто знает- что это за технология и как с ней работать посредствам Дельфи. |
Автор: SoWa 26.2.2006, 20:14 |
А может быть как то используется свободное место жесткого диска, а в файл только указатель дописывается? |
Автор: Girder 26.2.2006, 23:48 |
Файл занимает больше... чем видеш в инфе об файле... из-за выравнивания "на сектор/кластер". Вот в енто не использованное место можеш писать(если конечно... размер ентого места будет тебе достаточен ![]() Если мне неизменяет память... p0s0l выкладывал пример через Mapping пример ентого. Также можеш взять в арсенале его пример dfa.zip и его использывать. |
Автор: mes 27.2.2006, 00:33 |
Вот нашел немного инфы: http://www.ixbt.com/storage/ntfs.html |
Автор: Girder 27.2.2006, 01:19 |
1. А при чем здесь "многопоточные файлы" и структура диска? 2. Любой поток... храниться на диске, а не в воздухе. 3. Именно к основному потоку... и приводились примеры записи. Вот только с сжатыми файлами не проверял... будут ли приведенные коды работать или нет. PS: И не "каталог записей", а "главная файловая таблица" Мдя'мс вот только вопрос я в начале не правильно прочитал... енто же про "многопоточные файлы"... Добавлено @ 01:24 ![]() PS: http://www.ntfs.com/ Добавлено @ 01:26 http://www.ntfs.com/ntfs-multiple.htm |
Автор: mes 27.2.2006, 01:43 |
NTFS просто поддерживает многопоточные файлы, а FAT нет. Да свободное пространство диска уменьшается, но "видимый нами" размер файла остаётся прежним. ;) хотел выразится по понятней, но не получилось ![]() |
Автор: Girder 27.2.2006, 02:24 | ||
Ну ентом понятно. Я говорю об другом... а именно о записи в не доиспользованное место сектора(которое также возможно и в NTFS). PS: Я ж говорю... не правильно прочитал вопрос в начале. Ладно... уговорили. Даже Delphi запустил... для на всяк пожарной проверки ![]() SoWa, все енто до безобразия очень просто:
PS: Но лудше... имхо все таки скрывать не в "опциональных потоках"... а так как говорил выше. |
Автор: mes 27.2.2006, 04:49 | ||
Неа не лучше. Во первых можно повредить файл(неизвестно как поведет себя если файл сжат). во вторых приписать можно только ограниченый обьем. При копировании етого файла в другое место информация будет потеряна. |
Автор: Girder 27.2.2006, 11:29 |
Вот с ентим ХЗ... Там идет варавнивание на 16 кластеров... часть из них виртуальные... короче... лудше проверять атрибут ![]() |
Автор: mes 2.3.2006, 14:05 |
Спасибо Sowa, что привлек внимание к этой теме. Я подумал а не скрывает ли что от меня Windows. Поэтому сравнил объем занятого пространства дисков с общим размером рассположеных на нём файлов. На системных была значительная разница. (3Гб на одном и почти 2Гб на другом). Я решил поексперентировать и перенес все файлы (включая системные) на другой диск. Совершено пустой диск занимал почти 2Гб. Мне ето не понравилось и я отфармотировал етот диск. После вернул файлы на место и перезагрузился с только что отфармотированного диска. К моему удивлению система загрузилась и намного быстрей. Более того увеличилась скорость доступа к диску. Результат 5гб " дополнительного " пространства. И нормальная дефрагментации диска. |
Автор: SoWa 2.3.2006, 15:15 |
Так достаточно просто дефрагментацию сделать. |
Автор: mes 3.3.2006, 03:17 |
Суть не в дефрагментации, а в освобожденном пространстве(5Гб! на двух дисках обшим объемом 40Гб), которое было "поглощено" только на системных! дисках. И в увелечение скорости доступа. P.S. Плюс дефрагментации была произведена за день до експеримента. ![]() P.S.S. А ты знал что родная Виндоузкая дефрагментация, делает свою работу не очень хорошо : оставляет очень много фрагментированных файлов? ![]() |