Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Как считать файл именно с носителя, а не из буфера/экша

Автор: Andrewshkovskii 5.01.2009 3:06

Интересуют способы чтения файлов(в данном случае текстовых) напрямую, без чтения из кэша/буфера обмена. т.е что бы файлы не кэшировались.(увы, такое задание стоит). Есть ли возможность это реализовать на winapi или на чистом c/c++?И главный вопрос - как?

Автор: volvo 5.01.2009 3:37

Кеш в твоем случае - это что? Те несколько мегабайт, что есть у винчестера (аппаратный кеш) тоже надо запретить? Системный-то запрещается довольно просто: CreateFile + FILE_FLAG_NO_BUFFERING, а потом ReadFile... А вот что делать с аппаратным - вопрос...

Автор: Andrewshkovskii 5.01.2009 3:40

Вопрос идет о уже существующем файле.Т.е в винде я создал файл, и считываю его в программе с помошью файловых потоков c++. при первом запуске считывается как я понимаю а прямую, а при следующем уже явно с кэша.

Автор: volvo 5.01.2009 3:51

Цитата
Вопрос идет о уже существующем файле
А ты думаешь, CreateFile только создает файлы, а открыть уже существующий - не в состоянии? Ошибаешься, однако...

hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_NO_BUFFERING, NULL);
должно открыть файл с запретом системного кэширования