Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скопировать файл, не используя std::ifstream и ::CopyFile 
V
    Опции темы
Alca
Дата 27.7.2009, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Как можно скопировать файл  не используя  std::ifstream и ::CopyFile?
Есть ли еще какие-то способы?
Есть вариант использовать fread, fwrite.



--------------------
PM WWW ICQ Skype Jabber   Вверх
Vaulter
Дата 27.7.2009, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 2
Всего: 22



Код

#ifndef _MSC_VER
::system( "cp -f oldfile newfile" );
#endif



--------------------
PM MAIL WWW ICQ   Вверх
Alek86
Дата 27.7.2009, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



system("copy ...");

а еще перетаскивание мышкой в эксплорере

Это сообщение отредактировал(а) Alek86 - 27.7.2009, 12:08


--------------------
user posted image    user posted image
PM MAIL   Вверх
Alca
Дата 27.7.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

system("copy ...");

Еще есть варианты? В fcntl.h ничегго нет. 


--------------------
PM WWW ICQ Skype Jabber   Вверх
andrew_121
Дата 27.7.2009, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(Alca @  27.7.2009,  11:44 Найти цитируемый пост)
Есть вариант использовать fread, fwrite.

Так а в чем проблема?
Код

const int buff_size = 1024*128;
bool copy_file(const char* dst, const char* src) {
   char* buff = new char[buff_size];
   if ( !buff ) {
      return false;
   }

   FILE* in = fopen(src, "rb");
   if ( !in ) {
      delete[] buff;
      return false;
   }

   FILE* out = fopen(dst, "wb");
   if ( !out ) {
      fclose(in);
      delete[] buff;
      return false;
   }

   int isread = 0;
   while ( (isread = fread(buff, 1, buff_size, in)) > 0 ) {
      fwrite(buff, 1, isread, out);
   }

   fclose(in);
   fclose(out);

   return true;
}

...ошибочка была

Это сообщение отредактировал(а) andrew_121 - 27.7.2009, 12:17


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Alca
Дата 27.7.2009, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

Есть вариант использовать fread, fwrite.

Я так и хотел сделать, думал, что может есть какая-то стандартная функция.


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alek86
Дата 27.7.2009, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Alca, ты б сказал сначала, из-за чего проблема - копируешь файлы в натив моде винды?
тогда легче самому скопировать, используя торчащие из ntdll.dll функции NtReadFile и ей подобные


--------------------
user posted image    user posted image
PM MAIL   Вверх
andrew_121
Дата 27.7.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(Alca @  27.7.2009,  12:16 Найти цитируемый пост)
Я так и хотел сделать, думал, что может есть какая-то стандартная функция. 

нет такой


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Alca
Дата 27.7.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

Alca, ты б сказал сначала, из-за чего проблема - копируешь файлы в натив моде винды?

Ну типа нужна кроссплатформенная реализация .  smile 


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alek86
Дата 27.7.2009, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



чем же std::ifstream не подходит?


--------------------
user posted image    user posted image
PM MAIL   Вверх
Alca
Дата 27.7.2009, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

чем же std::ifstream не подходит?

Там глюки с путями. Если путь к файлу содержит русские символы, то ifstream не может найти этот файл.

Добавлено @ 12:49
http://forum.vingrad.ru/topic-229019.html
Это страшное слово setlocale

Добавлено @ 12:57
Цитата

Если путь к файлу содержит русские символы, то ifstream не может найти этот файл.

Не хо юникод прикручивать.

Это сообщение отредактировал(а) Alca - 27.11.2009, 10:27


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 27.7.2009, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50





--------------------
PM WWW ICQ Skype Jabber   Вверх
W4FhLF
Дата 27.7.2009, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



Цитата(Alca @  27.7.2009,  12:46 Найти цитируемый пост)
Если путь к файлу содержит русские символы, то ifstream не может найти этот файл.


Глоальную локаль установи.


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Alca
Дата 27.7.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

Глоальную локаль установи.

Это я в курсе. Как-то кривовато получается. А если укр, язык?


--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0979 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.