Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Операционные системы
>
Windows
> Тема:
Усечение файла
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Усечение файла (Прочитано 9484 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
Серж
Гость
Усечение файла
«
:
19-09-2004 14:20 »
Хочется получить фрагмент файла с заданными указателями начала и конца, не используя операцию копирования. Чтобы обрезать файл в конце, существует функция API SetEndOfFile. Кажется, что операция усечения в начале не намного сложнее, чем в конце, с точки зрения файловой системы, но соответствующей функции как будто бы нет.
А операция копирования может быть очень нежелательна, особенно если файл занимает несколько ГБайт. Кто-нибудь знает решение?
Записан
Серж
Гость
Усечение файла
«
Ответ #1 :
19-09-2004 14:25 »
Конечно, фрагмент файла в виде файла, наверное, я неясно сформулировал вопрос.
Записан
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
Усечение файла
«
Ответ #2 :
19-09-2004 17:50 »
Серж
, Я думаю такой функции нет. Расмотри структуру записи файла на диск. Как известно весь диск разбивается на кластеры. В системе FAT кластер не мог превышать размер 32 кБ. Каждый кластер разбивается на сектора. Каждый сектор в IBM совметимых машинах имеет обычно 512 байт. Файл состоит из записей в цепочку кластеров. При этом необязательно, чтобы кластеры шли друг за другом на физическом пространстве диска. При этом подрузомевается, что все кластера включенные в файл кроме последнего должны быть целые. т.е. не Допускается, чтобы кластер имел частичную запись.
Когда ты вырезаеш из начала файла скажем 15 байт. Ты нарушаеш это условие. Если даже есть такая функция в Виндовсе. Она все равно будет копировать весь файл, чтобы востановить целостность цепочки кластеров.
Записан
Не будите спашяго дракона.
Джаффар (Коша)
Серж
Гость
Усечение файла
«
Ответ #3 :
20-09-2004 06:41 »
Finch
, спасибо. Действительно, если первый кластер всегда должен быть целым, то это невозможно. Попробую найти это в документации по FAT32 и NTFS. А жаль.
Записан
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
Усечение файла
«
Ответ #4 :
20-09-2004 14:44 »
Серж
, В FAT нету механизма частичной записи в кластер, кроме последнего кластера в файле. Насчет NTFS я думаю что это правило также действует. Потому, что если ввести возможность частичной записи, то получиш больше головных болей , чем пользы. Та же самая дефрагментация записей. Неэффективное использование пространства диска. И еше нужно вести также каталог частичных записей. Плюс к этому потеря времени на отработку всего этого.
Записан
Не будите спашяго дракона.
Джаффар (Коша)
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
Усечение файла
«
Ответ #5 :
20-09-2004 17:14 »
кажется проще всего скопировать нужную часть файла в новый файл ...
Записан
>FAQ ПО ПРОГР.
>ССЫЛКИ ПО ПРОГР.
>Правила"Неотложки"
Серж
Гость
Усечение файла
«
Ответ #6 :
21-09-2004 06:56 »
Алексей1153
, я так и делаю.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Операционные системы
>
Windows
> Тема:
Усечение файла
Загружается...