Форум программистов, компьютерный форум CyberForum.ru

Непосредственная запись данных в файл до его закрытия - C++

Восстановить пароль Регистрация
 
Owyn
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
02.09.2011, 16:05     Непосредственная запись данных в файл до его закрытия #1
пока файл не закроешь после записи - новые данные там не появятся ( вроде кэширование windows в этом виновато, хз), чтоб "обновить" файл приходится переодически его просто закрывать и сразу открывать заново, - может есть альтернатива? (вроде write_file_now!() в обход кэширования?) надо чтоб другие могли читать содержимое файла, тк специально открываю его через _fsopen
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2011, 16:05     Непосредственная запись данных в файл до его закрытия
Посмотрите здесь:

C++ Запись массива в файл и его чтение
Чтение из файла в C, редактирование его и запись в новый файл C++
C++ Запись данных в файл
Запись данных в файл C++
C++ Чтение массива из файла, его преобразование и запись в другой файл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
02.09.2011, 16:40     Непосредственная запись данных в файл до его закрытия #2
Цитата Сообщение от Owyn Посмотреть сообщение
надо чтоб другие могли читать содержимое файла, тк специально открываю его через _fsopen
- Посмотри функцию
C++
1
2
3
4
5
6
7
8
9
10
CreateFile
        (
            sPath, 
            GENERIC_READ,
            FILE_SHARE_READ,
            NULL, 
            OPEN_EXISTING, 
            FILE_ATTRIBUTE_NORMAL,
            NULL
        );
В её параметрах насколько помню можно выставить общий доступ к файлу, правда если файл смогут писать все - алгоритм по записи может дать сбой - кто-то что-то дописал, а мы файл открыли и думали что место пустое и тоже попробовали писать
Owyn
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
02.09.2011, 16:49  [ТС]     Непосредственная запись данных в файл до его закрытия #3
зачем мне CreateFile() ? я его не создаю, а открываю, и да, уже с флагом общего доступа, и он есть, но, как я уже написал выше, когда пишешь в файл - написанное появляется только после fclose() что и желательно изменить.
-=ЮрА=-
Заблокирован
Автор FAQ
02.09.2011, 16:54     Непосредственная запись данных в файл до его закрытия #4
Цитата Сообщение от Owyn Посмотреть сообщение
зачем мне CreateFile()
- её и открывают и пишут и получают инфу, название пусть не пугает, я и так прекрасно понял твоё задание...
Owyn
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
02.09.2011, 17:05  [ТС]     Непосредственная запись данных в файл до его закрытия #5
Нашел,
у CreateFile() можно поставить dwFlagsAndAttributes на FILE_FLAG_WRITE_THROUGH
но тогда будет каждая запись в файл производится непосредственно, а не как хотелось бы, в определенные моменты. или же если в определенный момент поставить флаг FILE_FLAG_WRITE_THROUGH на файл и записать в него данные(из кэша данные тоже туда запишутся перед тем что мы сейчас пишем?) и сразу убрать этот флаг с файла, то это и будет, то что нужно?
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
02.09.2011, 17:51     Непосредственная запись данных в файл до его закрытия #6
Цитата Сообщение от Owyn Посмотреть сообщение
но тогда будет каждая запись в файл производится непосредственно, а не как хотелось бы, в определенные моменты
Если тебе надо записывать в файл данные в определенные моменты, то создай очередь и периодически сбрасывай ее в файл.
Нужного эффекта стандартными (известными мне) средствами добиться нельзя. ОС сама решает, когда ей записать данные из буфера, а когда поднакопить еще.

Не по теме:

Цитата Сообщение от Owyn Посмотреть сообщение
зачем мне CreateFile() ? я его не создаю, а открываю
Не пробовали сначала почитать о потом начинать истерику?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2011, 19:14     Непосредственная запись данных в файл до его закрытия
Еще ссылки по теме:

Запись в файл и возможность его редактирования C++
C++ Запись в файл и его считывание
C++ Запись в бинарный файл двумерного строкового вектора и его считывание

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
02.09.2011, 19:14     Непосредственная запись данных в файл до его закрытия #7
А для начала попробуй использовать fflush(), если ещё не. Это, конечно, не заставит ОС записать данные на диск, но по-крайней мере программные буферы будут отправлены ОС, а этого должно быть уже достаточно.
Yandex
Объявления
02.09.2011, 19:14     Непосредственная запись данных в файл до его закрытия
Ответ Создать тему
Опции темы

Текущее время: 13:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru