Привет!
RedHair wrote:
>
> У меня следующая проблема.
> Создаю файл — CreateFile(). Записываю в него некоторые данные, которые представляют собой строки в ANSI — WriteFile(). Это происходит на диске с размером кластера 4кб.
Мимоходом маленькое замечание. WriteFile не знает никаких строк в ANSI,
она только записвает байты. Уверен, что здесь все в порядке ?
> Далее копирую этот файл (xcopy) из командной строки на диск с размером кластера 512б.
> Файл сильно фрагментируется. Мои текстовые фразы разрываются.
> В итоге, когда я пытаюсь физически (открывая диск все тем же CreateFile()) на диске найти эти фразы — они не ищутся.
Этого не может быть, потому что это противоречит основным принципам.
Почему — об этом достаточно написал Alex Alexandrov, повторяться не
буду. Насчет того, что ты не можешь найти свои фразы
1. Проверь, есть ли они в оригинале.
2. Сравни оригинал и копию —
C:> fc original.txt copy.txt (если файлы текстовые)
C:> fc original.dat copy.dat /B (если файлы двоичные)
>Примечание: если создавать файл заново (например в проводнике), и копировать туда содержание
исходного файла — все прекрасно ищется?
Это как так ? Создавать файл в проводнике и после этого копировать туда
содержимое ? Я такого в проводнике делать не умею. Проводник просто
копирует файл, затирая прежний файл.
>
> Вопрос:
> 0. могут ли фразы в исходном файлек не искаться не из-за дефрагментации, а по другим причинам?
Могут. Причина одна — записал не то
> 1. как добиться того, чтобы ничинать запись в файл непосредственно с начала кластера?
Кластеры тебя волновать не должны. Работа с кластерами АБСОЛЮТНО
ПРОЗРАЧНА для приложений, их не касается, какие кластеры выделяются.
Содержимое файла от расположения кластеров не зависит.
> 2. если нельзя добиться п1 — как сделать дефрагментацию?
Не стоит. Лучше ищи ошибку у себя.
--
With best regards,
Pavel Dvorkin
Posted via RSDN NNTP Server 1.9 gamma