Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.217.187.179] |
|
Сообщ.
#1
,
|
|
|
При попытки создать/скопировать файл, с уже имеющейся в пунке назначения одноименной директорией ничего не выходит. Т.е. если создать в папке, куда копируется файл с именем "FILE1.TXT" папку с таким же именем - скопировать файл/создать файл не получится, однако сама Windows это каким-то образом делает... Кто-нибудь знает варианты?
|
Сообщ.
#2
,
|
|
|
еще бы показал как копируешь, то вообще было б всё понятно...
используй SHFileOperation |
Сообщ.
#3
,
|
|
|
ElcnU копирую через обычный CopyFile(Ex). Над SHFileOperation думал, но это как крайний вариант.. Неужели стандартными функциями для работы с файлами/папками нельзя ограничиться?
Добавлено. Попробовал SHFileOperation - результат нулевой. Более того, попробовал скопировать средствами Windows - тоже не дает (даже командой copy). Похоже, ситуацию нельзя решить без удаления/перемещения папки... |
Сообщ.
#4
,
|
|
|
Вообще, у CopeFile есть последний параметр для этого
Цитата MSDN bFailIfExists [in] If this parameter is TRUE and the new file specified by lpNewFileName already exists, the function fails. If this parameter is FALSE and the new file already exists, the function overwrites the existing file and succeeds. |
Сообщ.
#5
,
|
|
|
B.V. все верно, есть такой параметр. Вот только функция все равно не выполнится по причине
Цитата An application cannot create a directory with CreateFile; it must call CreateDirectory or CreateDirectoryEx to create a directory. Opening a directory with CreateFile requires the FILE_FLAG_BACKUP_SEMANTICS flag. Так что увы, похоже мой вопрос лишен смысла. |
Сообщ.
#6
,
|
|
|
Вообще правильный путь, или предлагать пользователю перезаписать файл, или скопировать файл FILE1.TXT в файл с именем FILE1(XXx).TXT .
И перед копированием самому это проверить. А имя папки не должно совпадать с именем файла. Цитата однако сама Windows это каким-то образом делает Каким образом можно повторить эксперимент по созданию одноимённых файла/папки ?? |
Сообщ.
#7
,
|
|
|
Jenya вопрос был не в том, как правильно/неправильно, а в том - как быть:) Эксперимент повторить очень просто. Создаете текстовый файл "Текстовый документ.txt", рядом создаете новую папку и пытаетесь пытаетесь переименовать ее в "Текстовый документ.txt". Результат - сообщение об ошибке.
На самом деле жил с какой-то странной уверенностью, что сама Windows умеет копировать не взирая на такие папки, а когда проверил - осознал всю глубину своего заблуждения:) |
Сообщ.
#8
,
|
|
|
Цитата Azatoth @ папку с таким же именем Вот сей момент я пропустил. Показалось, что речь идет о перезаписи файла. И часто встречаются папки с именами вида *.*? Самый простой выход -- проверка на атрибуты конечного файла. Если это окажется папка, то лучше предложить пользователю переобозвать конечный файл |
Сообщ.
#9
,
|
|
|
Поставь в имя файла русскую буковку, ну например "е". И будет тебе щастье.
|
Сообщ.
#10
,
|
|
|
Цитата Эксперимент повторить очень просто. Ну так имелся ввиду эксперимент с положительным результатом. А так повторить ошибку очень просто. |