Здравствуйте !
Есть не большой вопросик по subj. Мне нужно файл с которым работает моя программа видоизменить с целью его укорачивания, для чего я на время прекрываю её доступ к файлу, переименовывваю и из уже переименованного кидаю в рабочий файл только то , что мне требуется. Но вот загвоздка — программа ругается (имя нового файла я создаю в зависимости от времени текущего — и проблемма возникает на Debug этапе — когда я насколько раз проделываю эту процедура в течении часа) , поскольку имя файла в который я хочу переименоваться уже есть ! Можно ли переименовать файл "безусловно" ? Т. е. перезаписать если он уже есть, не проверяя сей факт ??
Буду очень благодарен за совет...
Ох уф эти плогламки ... ох уф эти плогламмисты !!!
Re: CFile::Rename(одно, в другое)
От:
Аноним
Дата:
09.04.02 08:57
Оценка:
Здравствуйте Aries_, Вы писали:
Т. е. перезаписать если он уже есть, не проверяя сей факт ??
При открытии файла укажи
w — Create for writing. If a file by that name already exists, it will be overwritten.
Открытие для записи. Если файл с указанным именем уже существует он будет переписан.
Здравствуйте Aries_, Вы писали:
A>Здравствуйте ! A>Есть не большой вопросик по subj. Мне нужно файл с которым работает моя программа видоизменить с целью его укорачивания, для чего я на время прекрываю её доступ к файлу, переименовывваю и из уже переименованного кидаю в рабочий файл только то , что мне требуется. Но вот загвоздка — программа ругается (имя нового файла я создаю в зависимости от времени текущего — и проблемма возникает на Debug этапе — когда я насколько раз проделываю эту процедура в течении часа) , поскольку имя файла в который я хочу переименоваться уже есть ! Можно ли переименовать файл "безусловно" ? Т. е. перезаписать если он уже есть, не проверяя сей факт ??
Можно, в Win32 API есть функция MoveFileEx(). Но эта функия есть только в WindowsNT/2000/XP, в Window95/98/ME ее нет.
Хотя неужели трудно написать
CFile::Remove(newFileName);
CFile::Rename(oldFileName, newFileName);
Здравствуйте Aries_, Вы писали:
A>Здравствуйте ! A>Есть не большой вопросик по subj. Мне нужно файл с которым работает моя программа видоизменить с целью его укорачивания, для чего я на время прекрываю её доступ к файлу, переименовывваю и из уже переименованного кидаю в рабочий файл только то , что мне требуется. Но вот загвоздка — программа ругается (имя нового файла я создаю в зависимости от времени текущего — и проблемма возникает на Debug этапе — когда я насколько раз проделываю эту процедура в течении часа) , поскольку имя файла в который я хочу переименоваться уже есть ! Можно ли переименовать файл "безусловно" ? Т. е. перезаписать если он уже есть, не проверяя сей факт ?? A>Буду очень благодарен за совет...
1. CFile — это вроде как MFC, так что лучше там задавать
2. то, что предложили с w, убьёт тот файл что был вначале, а не тот в который переименовываем
3. я бы убивал файл в который ты переименовываешь явно
4. если тебе нужен просто временный файл, то брать время + что-то за основу имени файла не есть очень хорошо, я бы посоветоваль посмотреть WinAPI-шную ::GetTempFileName()
Здравствуйте Курилка, Вы писали:
К>1. CFile — это вроде как MFC, так что лучше там задавать К>2. то, что предложили с w, убьёт тот файл что был вначале, а не тот в который переименовываем К>3. я бы убивал файл в который ты переименовываешь явно К>4. если тебе нужен просто временный файл, то брать время + что-то за основу имени файла не есть очень хорошо, я бы посоветоваль посмотреть WinAPI-шную ::GetTempFileName()
Пасибки ... учту замечания (3 — очень даже ничего)
Благодарствую
Ох уф эти плогламки ... ох уф эти плогламмисты !!!