Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2018, 10:35   #1
Михаил1990
Пользователь
 
Регистрация: 17.05.2018
Сообщений: 29
По умолчанию C++ прочтение файла(его копирование)

Добрый день комрады, такая проблема- не получается копировать fstream
Код:
#include <fstream> 
#include <iostream> 
#include <experimental/filesystem>
#include <Windows.h>
namespace fs = std::experimental::filesystem;
using namespace std;
int main()
{

	for (auto& s : fs::recursive_directory_iterator("C:\\Users\\Admin\\Desktop\\"))
	{
		if (fs::is_regular_file(s))
		{

			if (fs::path(s).extension() == ".docx")
			{
					//работает,верно указывает патч
				std::cout << fs::path(s) << '\n';

				try {
//ВЫЛЕТАЮТ ИСКЛЮЧЕНИЯ...
					fs::copy_file(fs::path(s), "C:\\Users\\Admin\\Documents\\Аттестация\\");
				}
				catch (const std::exception & ex)
				{
					std::cout << ex.what() << '\n';

				}

			}
			
		}

	}


}
Думал решить это обычным чтением этого файла и записыванием в новое место идет ошибка в fs:ath(s) в цикле вайл и при закрытии файла...
Можно сделать копирование проще без велосипедов???
Изображения
Тип файла: png error.png (9.9 Кб, 118 просмотров)
Михаил1990 вне форума Ответить с цитированием
Старый 23.08.2018, 10:39   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Какие исключения? У копи_файл параметры имена файлов, а не файл и папка.
p51x вне форума Ответить с цитированием
Старый 23.08.2018, 11:03   #3
Михаил1990
Пользователь
 
Регистрация: 17.05.2018
Сообщений: 29
По умолчанию

Добавил имя файла и чтение файла.
Вылетают исключения acces viliotation...
Код:
if (fs::path(s).extension() == ".txt")
			{


				ifstream myReadFile;
				myReadFile.open(fs::path(s));
				char output[1000];
				if (myReadFile.is_open()) {
					while (!myReadFile.eof()) {


						myReadFile >> output;
						//cout << output;
					

						fstream file;
						file.open(fs::path(s).filename, std::ios::out);
						file << output;
						file.close();

					}
				}
				myReadFile.close();
Михаил1990 вне форума Ответить с цитированием
Старый 23.08.2018, 11:05   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

А где скобки у filename?
p51x вне форума Ответить с цитированием
Старый 23.08.2018, 11:17   #5
Михаил1990
Пользователь
 
Регистрация: 17.05.2018
Сообщений: 29
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А где скобки у filename?
Исправил,все работает. Но копируемые файлы маленького размера - 0-1кб
Это из за
Код:
char output[1000];
Но при изменении этого параметра размер не увеличивается, что это означает? Не успевает считать файл?
Михаил1990 вне форума Ответить с цитированием
Старый 23.08.2018, 11:18   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Нет. Это означает, что файл надо открывать в режиме дозаписи. Ну или использовать копи_файл.
p51x вне форума Ответить с цитированием
Старый 23.08.2018, 11:23   #7
Михаил1990
Пользователь
 
Регистрация: 17.05.2018
Сообщений: 29
По умолчанию

Дозапись осуществляется так?
Код:
std::ios_base::app
Не работает...
Михаил1990 вне форума Ответить с цитированием
Старый 23.08.2018, 11:28   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

У вас файл какой? Бинарный или текстовой? Вы это учитываете? Учитываете, что << форматный ввод, а read|readsome нет?
p51x вне форума Ответить с цитированием
Старый 23.08.2018, 11:29   #9
Михаил1990
Пользователь
 
Регистрация: 17.05.2018
Сообщений: 29
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
У вас файл какой? Бинарный или текстовой? Вы это учитываете? Учитываете, что << форматный ввод, а read|readsome нет?
Файлы текстовые...
заметил что файлы с русским текстом записываються как 0 байтов...
Михаил1990 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Apache POI : Как удалить из файла (после его обновления) кешированные результаты вычислений по формулам, перед сохранением нового файла? Hehabr Общие вопросы по Java, Java SE, Kotlin 0 09.08.2017 10:36
Поиск по части строки, копирование найденного куска текста и вставка его в ячейку рядом., Список элементов, которые подвергаются п autobaryga Microsoft Office Excel 3 28.03.2015 15:11
Копирование нода и добавление его в родительский 3D Hunter Общие вопросы Delphi 10 14.01.2015 08:53
Правила раздела "Свободное общение" (прочтение обязательно) Arigato Свободное общение 0 23.06.2010 10:38