|
|
|
fopen и дата создания файла
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Пишу простой лог событий в текстовый файл. Файл лога не должен превышать определенного размера и в один файл не должны поподать записи за разные сутки. Я пишу в файл с опр. именем и при достижении максимального размера вызываю ф. MoveFile для переименования, а ф. записи в лог должна создать новый файл Код: plaintext 1. 2. 3. 4. 5. 6. 7. Так вот проблема в том что файл созданный вызывом fopen(FName,"a") имеет дату создания предыдущего файла, как будто файл не создаеться заново а просто перезаписываеться старый. Переименование работает правильно и новый файл естественно чистый. Собственно вопрос:"Что делать?" Самый простой способ это проверять не дату создания а дату изменения, но все таки хотелось бы разобраться с этой проблемой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 14:27 |
|
||
|
fopen и дата создания файла
|
|||
|---|---|---|---|
|
#18+
Вероятнее всего, проблема в режиме открытия файла - "а" r Open for reading only. w Create for writing. If a file by that name already exists, it will be overwritten. a Append; open for writing at end-of-file or create for writing if the file does not exist. r+ Open an existing file for update (reading and writing). w+ Create a new file for update (reading and writing). If a file by that name already exists, it will be overwritten. a+ Open for append; open (or create if the file does not exist) for update at the end of the file. Пробуйте w,w+ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 15:34 |
|
||
|
fopen и дата создания файла
|
|||
|---|---|---|---|
|
#18+
Это было первое что я попробывал - результат тотже. при чем я даже пробовал удалять файлы в ручную между запусками программы. Щас попробую fstream, просто для эксперимента т.к. у меня он работает в 2 раза медленнее. Так что в итоге я наверное буду проверять время модификации файла. Удачи. ЗЫ MSVC 6 + W2k + FAT32 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 15:55 |
|
||
|
fopen и дата создания файла
|
|||
|---|---|---|---|
|
#18+
Возможно, это особенности файловой системы, но могу только предполагать... Но можно попробовать другие варианты решения проблемы... 1. Явно удалять файл, потом создавать по-новой 2. int creat(const char *path, int amode); 3. .... Мало ли ещё что :) Может и получится... А лучше сделать универсальнее: 4. Для каждой даты создавать файл с уникальным именем (например с датой в названии). Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 16:12 |
|
||
|
fopen и дата создания файла
|
|||
|---|---|---|---|
|
#18+
За одно число может быт несколько файлов, поэтому я и сделал один активный файл и для него держу его название(дату) и перед записью ее проверяю, при достижении максимального размера я беру эту строку добовляю к ней текущий индекс и переименовываю. Соответственно в штатном режиме все идет нормально. Если такой файл есть я просто увеличиваю индекс, но если программу не перегружали все проходит с первой попытки. Но при запуске этот текущий файл может уже существовать, и вот сдесь и возникает проблема. Его необходимо переименовать с определенной датой в имени. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 16:37 |
|
||
|
fopen и дата создания файла
|
|||
|---|---|---|---|
|
#18+
moteusЗа одно число может быт несколько файлов, поэтому я и сделал один активный файл и для него держу его название(дату) и перед записью ее проверяю, при достижении максимального размера я беру эту строку добовляю к ней текущий индекс и переименовываю. Соответственно в штатном режиме все идет нормально. Если такой файл есть я просто увеличиваю индекс, но если программу не перегружали все проходит с первой попытки. Но при запуске этот текущий файл может уже существовать, и вот сдесь и возникает проблема. Его необходимо переименовать с определенной датой в имени. Удачи. Можно ещё завести какой-нибудь ini-файл и в нём хранить имя последнего использовавшегося... а при запуске проверять... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 17:04 |
|
||
|
fopen и дата создания файла
|
|||
|---|---|---|---|
|
#18+
Мне кажеться это не имеет смысла. В сутки будет не более 30 файлов. Файлы именуються как 20060504.001.log При запуске я нахожу файл с текущей датой и максимальным индексом и устанавливаю индекс и при работе происходит только одно обращение с проверкой наличия файла. При переходе на новую дату индекс сбрасываеться. Необходимость сознания нового файла по дате я отслеживаю по данным хранящимся в программе, а для размера обращаюсь к файлу. Хотя можно и его отслеживать в программе, т.к. изменять активный файл врядли будут. Единственный компромис это то что при каждом запуске активный файл переименовываеться, но это ИМХО вполне приемлемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 17:27 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=357&tid=2031368]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 344ms |

| 0 / 0 |
