Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/47: Рейтинг темы: голосов - 47, средняя оценка - 4.60
Кошковед
 Аватар для co6ak
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390

Копирование файлов

14.08.2011, 19:51. Показов 9812. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, дайте пожалуйста исходник копирования файлов по принципу "открыть файл1 -> считать в буфер содержимое -> открыть файл2 -> заменить содержимое -> сохранить файл2"


очень нужно. зашиваюсь
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.08.2011, 19:51
Ответы с готовыми решениями:

Копирование файлов С++
Нужно скопировать все файлы из папки С:/zello в папку С:/zello2 system("copy С:\\zello С:\\zello2"); какие библиотеки...

копирование файлов
Зраствуйте можете подсказать алгоритм копирования файлов любого типу(разширения)??

Копирование файлов C++
Прошу помочь найти в чем здесь ошибка. Условие: Дан текстовый файл на русском языке. Скопировать содержимое данного файла в новый...

45
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
16.08.2011, 14:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
вбить CopyFile и всё
Ага и быть привязаным к ОС
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
16.08.2011, 14:09
C++
1
CopyFile(sOldPath,sNewPath,false)
- false - не падать если файл существует
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
16.08.2011, 14:09
-=ЮрА=-, В чем профит-то ?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
16.08.2011, 14:10
Цитата Сообщение от asics Посмотреть сообщение
Ага и быть привязаным к ОС
- каким образом ты будешь привязан?
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.08.2011, 14:14
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- false - не падать если файл существует
У boost'a третий параметр то же самое делает, только не совсем ясно, что нужно передавать...
Ну я просто сделал проверку, если файл существует, то удаляю.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
каким образом ты будешь привязан?
Скомпилируй свой код не под виндоус, узнаешь =)
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
16.08.2011, 14:15
-=ЮрА=-,
CopyFile - WinAPI(only Win)
boost::copy_file - crossplatform

Добавлено через 1 минуту
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
каким образом ты будешь привязан
Я как раз-то не буду, может ты будешь...
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
16.08.2011, 14:17
Цитата Сообщение от asics Посмотреть сообщение
CopyFile - WinAPI(only Win)
boost::copy_file - crossplatform
- да а экзешник с винды разбежиться и заработает на линуксе)))Я написал что использовать CopyFile или же boost::copy_file - вообще не по заданию будет использовать, вот и всё
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
16.08.2011, 14:18
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- да а экзешник с винды разбежиться и заработает на линуксе
Омг, ты не выкупаешь, речь идет об переносимости кода.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.08.2011, 14:23
Еще переносимый вариантик, по идее файл читается сначала в буфер.
Если нет - можно перегнать в sstream, и инициализировать этим sstream'ом string.
C++
1
2
3
4
5
#include <fstream>
int main(){
    std::ifstream in("input.txt");
    std::ofstream("output.txt") << in.rdbuf();
}
0
Кошковед
 Аватар для co6ak
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
16.08.2011, 14:43  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
FILE *src;
    size_t result;
 
    src = fopen(srcName.c_str(), "r");
    if( !src )
    {
        printf("Cannot open file. Is it exist?=====================");
        printf(srcName.c_str());
        printf("===================================================");
 
        return false;
    }
    fseek( src, 0, SEEK_END );
    long file_size = ftell( src );
    unsigned char *buf = new unsigned char [file_size];
    if (buf==NULL){
        return false;
    }
 
    fseek ( src , 0, SEEK_SET );
 
    result = fread (buf, 1, file_size, src);
    if (result!=file_size) perror("error");
    fclose(src);
подаю файл 4 метра с лишним. result = 800 o_O
подаю файл 5.5 метров, result = 926 o_O

для маленьких файлов работает без проблем вобще
0
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
16.08.2011, 15:45
так вродь уже запостили блоками по 512
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
 
    FILE * from = fopen("qt45x.djvu","rb");
    FILE * to = fopen("1.djvu","wb");
 
    char buf[BUFSIZ];
 
    size_t res=0;
 
    while ((res=fread(buf,sizeof(char),BUFSIZ,from))!=0) {
        fwrite(buf,sizeof(char),res,to);
    }
    puts("Succeed.");
 
    return 0;
}
книжку djvu 67 мб без потерь копирнул

Цитата Сообщение от co6ak Посмотреть сообщение
src = fopen(srcName.c_str(), "r");
rb надо открывать. да и зачем мешать std::string к программе на С ?
0
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
16.08.2011, 15:57
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
тут не хватает Dispatch и Translate Messages - чтобі избежать зависания программы при копировании, ну это как рекомендации...


-=ЮрА=-, вы про не-виндоус слышали? Linux, BSD там... Да Макинтош в конце концов. И вообще, зависания не будет, не будет просто вывода. Хотите вывод - делайте полоску прогресса, выносите её в соседний поток (чтобы вывод не тормозил копирование), и будет вам счастье. И вообще, зачем утилите командной строки обрабатывать оконные сообщения?

Цитата Сообщение от co6ak
C
1
2
3
result = fread (buf, 1, file_size, src);
    if (result!=file_size) perror("error");
    fclose(src);
Собак, не копируйте много информации за раз, вам уже говорили. Посмотрите, как это делается тут или постом раньше (-=ЮрА=-).
0
Кошковед
 Аватар для co6ak
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
16.08.2011, 16:03  [ТС]
Информация передается во встроенную ф-ию либы libssh, и уже там разбивается по блокам.
проблема была в исполняемых файлах. вЕндуз требует флаг "rb". линух этот флаг игнорирует.

Добавлено через 1 минуту
не могу передавать блоками, т.к. эта сраная либа будет перезаписывать файл, а не добавлять к нему.
0
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
16.08.2011, 16:08
Цитата Сообщение от co6ak Посмотреть сообщение
вЕндуз требует флаг "rb". линух этот флаг игнорирует.
co6ak, не, ну пардон, а я как делал?


Цитата Сообщение от co6ak Посмотреть сообщение
не могу передавать блоками, т.к. эта сраная либа будет перезаписывать файл, а не добавлять к нему.
fopen [reference]

Чтобы открыть с дописыванием, вместо "wb" пишите "ab". И вообще, хотите libssh - юзайте её. Только на том конце создайте сервер/клиент-приёмник, с которым по ssh устанавливайте соединение, и который будет писать выходной файл, и передавайте блоками.

Добавлено через 2 минуты
http://api.libssh.org/master/l... _sftp.html
0
Кошковед
 Аватар для co6ak
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
16.08.2011, 16:15  [ТС]
как-бэ сказать...
это невозможно.

не потому, что я не умею (а я не умею), а потому, что просто запрещено так делать!!
0
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
16.08.2011, 16:17
co6ak, поймите, это бред - загружать образ диска 7 Гб в оперативку, а потом пересылать это по сетке как есть. Как поставлена задача?
0
Кошковед
 Аватар для co6ak
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
16.08.2011, 16:19  [ТС]
неужели я где-то опечатался, и написал "гб" вместо "метров" ?
на коммуникаторе ПЗУ то меньше в 2 раза, какая там нах оперативка.


Задача: написать инсталлятор с минимумом настроект (выбор должностного лица на форме, версия прошивки). подключение - ssh. выполнение команд, заливка файлов, резервное копирование, тестирование, сообщение об ошибках.
0
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
16.08.2011, 16:22
co6ak, тогда понятно Но всё равно, 200 метров - это тоже расточительство. Жалко, что SFTP запрещён. Хорошо бы было.
0
Кошковед
 Аватар для co6ak
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
16.08.2011, 16:23  [ТС]
да там максимальный - 8 метров файл. самый большой
0
16.08.2011, 17:51
 Комментарий модератора 
Кто продолжит срач на темы переносимости кода или соответствующих разделов форума получит карточку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.08.2011, 17:51

Копирование файлов
Приветствую. Пытался написать программу для копирования содержимого одного файла в другой: #include &lt;iostream&gt; #include...

копирование файлов
Всем приятного времени суток! Мне нужно просто скопировать файл, вроде ничего сложного) Сделал так: #include &lt;stdio.h&gt; #include...

Копирование текстовых файлов
Столкнулся с такой проблемой : при копировании из одного файла в другой мне нужно исключить(пропустить) слова, которые начинаются на букву,...

Побайтовое копирование файлов
Добрый день. Подскажите пожалуйста,как в данном примере можно было бы выполнить копирование файла в обратном порядке? ifstream...

Копирование, сортировка файлов
Добрый день! У меня в папке много различных файлов необходимо, переместить или скопировать их по различным созданным папкам(сортировка не...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru