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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Owyn
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
#1

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

02.09.2011, 16:05. Просмотров 473. Ответов 6
Метки нет (Все метки)

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

Запись в файл и его считывание - C++
Добрый вечер,помогите с программой "строковый ввод-вывод" 1)Создать текстовый файл F1 не менее, чем из 10 строк и записать в него...

Запись в файл и возможность его редактирования - C++
задание: напишите программу которая запрашивает у пользователя имя, фамилию, дату рождения, номер группы и записывает данные в файл....

Запись массива в файл и его чтение - C++
Помогите, пожалуйста: надо записать в файл массив из, например, 10 элементов, вычисляющихся как f=f+1, например. Затем считать полученные...

Как открыть файл на чтение и запись, создав его, если его не существует, и перезаписать, если он существует? - C++
Как открыть файл на чтение и запись, создав его, если его не существует, и перезаписать, если он существует?

Чтение массива из файла, его преобразование и запись в другой файл - C++
Всем привет. Есть вот такой код: #include <iostream> #include <vector> #include <fstream> #include <string> using...

Запись в бинарный файл двумерного строкового вектора и его считывание - C++
Ну ни в какую не могу понять эту работу с файлами( В чем проблема? Заранее спасибо #include <iostream> #include <fstream> ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
-=ЮрА=-
Заблокирован
Автор 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
        );
В её параметрах насколько помню можно выставить общий доступ к файлу, правда если файл смогут писать все - алгоритм по записи может дать сбой - кто-то что-то дописал, а мы файл открыли и думали что место пустое и тоже попробовали писать
0
Owyn
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
02.09.2011, 16:49  [ТС] #3
зачем мне CreateFile() ? я его не создаю, а открываю, и да, уже с флагом общего доступа, и он есть, но, как я уже написал выше, когда пишешь в файл - написанное появляется только после fclose() что и желательно изменить.
0
-=ЮрА=-
Заблокирован
Автор FAQ
02.09.2011, 16:54 #4
Цитата Сообщение от Owyn Посмотреть сообщение
зачем мне CreateFile()
- её и открывают и пишут и получают инфу, название пусть не пугает, я и так прекрасно понял твоё задание...
0
Owyn
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
02.09.2011, 17:05  [ТС] #5
Нашел,
у CreateFile() можно поставить dwFlagsAndAttributes на FILE_FLAG_WRITE_THROUGH
но тогда будет каждая запись в файл производится непосредственно, а не как хотелось бы, в определенные моменты. или же если в определенный момент поставить флаг FILE_FLAG_WRITE_THROUGH на файл и записать в него данные(из кэша данные тоже туда запишутся перед тем что мы сейчас пишем?) и сразу убрать этот флаг с файла, то это и будет, то что нужно?
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
02.09.2011, 17:51 #6
Цитата Сообщение от Owyn Посмотреть сообщение
но тогда будет каждая запись в файл производится непосредственно, а не как хотелось бы, в определенные моменты
Если тебе надо записывать в файл данные в определенные моменты, то создай очередь и периодически сбрасывай ее в файл.
Нужного эффекта стандартными (известными мне) средствами добиться нельзя. ОС сама решает, когда ей записать данные из буфера, а когда поднакопить еще.

Не по теме:

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

0
grizlik78
Эксперт С++
1911 / 1443 / 112
Регистрация: 29.05.2011
Сообщений: 3,000
02.09.2011, 19:14 #7
А для начала попробуй использовать fflush(), если ещё не. Это, конечно, не заставит ОС записать данные на диск, но по-крайней мере программные буферы будут отправлены ОС, а этого должно быть уже достаточно.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2011, 19:14
Привет! Вот еще темы с ответами:

Запись данных в файл - C++
для хранения данных использую мультикарту,хранящую пару ключ/значение в виде string пробую записать данные в файл и выскакивает ошибка ...

Запись данных в файл - C++
Есть программа "телефонный справочник", которая считывает данные, а потом по требованию выводит их на экран. Как сделать, что бы она...

Запись данных в файл - C++
Помогите записать данные в файл?) этой программы #include <string> #include <iostream> using namespace std; int main() { ...

Запись данных в файл - C++
Добрый день всем! Помоги разобраться как сделать. Есть класс. Нужно сделать ввод вывод элементов класса в текстовый файл. Класс имеет...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.09.2011, 19:14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru