Re: покластерная запись в файл
От: Alex Alexandrov США  
Дата: 14.10.04 19:04
Оценка:
Здравствуйте, RedHair, Вы писали:

R> У меня следующая проблема.

R> Создаю файл — CreateFile(). Записываю в него некоторые данные, которые
R> представляют собой строки в ANSI — WriteFile(). Это происходит на диске
R> с размером кластера 4кб. Далее копирую этот файл (xcopy) из командной
R> строки на диск с размером кластера 512б. Файл сильно фрагментируется.
R> Мои текстовые фразы разрываются. В итоге, когда я пытаюсь физически
R> (открывая диск все тем же CreateFile()) на диске найти эти фразы — они
R> не ищутся. Примечание: если создавать файл заново (например в
R> проводнике), и копировать туда содержание исходного файла — все
R> прекрасно ищется?
R>
R>
R> Вопрос:
R> 0. могут ли фразы в исходном файлек не искаться не из-за дефрагментации,
R> а по другим причинам? 1. как добиться того, чтобы ничинать запись в файл
R> непосредственно с начала кластера? 2. если нельзя добиться п1 — как
R> сделать дефрагментацию?
R>
R> МСДН предлагает решение на основе DeviceIOControl — в общих чертах:
R> искать место на диске, где есть несколько свободных кластеров подряд и
R> туда переписывать файл.
R>
R> ИМХО — это достаточно муторно! И не поступать же мне так с каждым
R> переписываемым файлом!
R>
R> М.б. посоветуете, как заполнять прямо непосредственно кластеры, а не
R> писать в файл по указателю?

При использовании CreateFile и прочих сервисов операционной системы совершенно необязательно думать о проблемах фрагментации данных. Это совершенно другой уровень абстракции и помочь ему Вы вряд ли сможете. Все, что Вы написали про проблемы с фрагментированностью файла — ерунда полная. Ищите более банальную ошибку.

-- Всего хорошего!
-- Alex Alexandrov, e-mail: alex_alexandrov(at)fromru(dot)com
Posted via RSDN NNTP Server 1.9 gamma
It's kind of fun to do the impossible (Walt Disney)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.