nie można utworzyć folderu jak wcześniej był usunięty

0

Hej,
Jeżeli nie ma folderu to create_directory tworzy go, jeżeli jest folder to create_directory też nie zwraca błędu, działa wszystko poprawnie.
Nie mogę utworzyć folderu w jednej egzekucji programu jedynie w przypadku jeżeli wcześniej był jakiś plik w folderze i w związku z tym wykonał się większy kod funkcji remove_all (ona tak działa że jak są pliki w folderze to usuwa je i folder a jak nie ma plików to nie usuwa folderu). codegeneric:1 mam po create_directory.
Ma ktoś doświadczenie z kasowaniem i tworzeniem folderów z użyciem std::filesystem, o co tu chodzi?

const std::string OUTPUT_DIR = ".\\files\\output";
void cleanup() //usun cały output po poprzednim wykonaniu programu
{
	std::error_code errcode;
	//delete existing one
	if(!std::filesystem::remove_all(OUTPUT_DIR, errcode) and errcode)
		std::cout << "Cannot delete output dir, error code :" << errcode << std::endl;

	//create new one
	if(!std::filesystem::create_directory(OUTPUT_DIR, errcode) and errcode)
		std::cout << "Cannot create output dir, error code" << errcode << std::endl;
}

workaround (za drugim razem działą, tworzy się folder w NOK scenariuszu):

	//create new one
	if (!std::filesystem::create_directory(OUTPUT_DIR, errcode) and errcode)
	{
		if(!std::filesystem::create_directory(OUTPUT_DIR, errcode) and errcode)
			std::cout << "Cannot create output dir, error code" << errcode << std::endl;
	}
3

A co mówi errcode w przypadku niepowodzenia?

BTW, nie musisz sprawdzać err code jeśli sprawdzasz wartość zwracaną if(!std::filesystem::create_directory(OUTPUT_DIR, errcode) and errcode). Jeżeli create_directory zwróci false to errcode zawsze będzie wskazywał błąd. Wystarczy więc tak if(!std::filesystem::create_directory(OUTPUT_DIR, errcode)).

0

@several: error code zwraca codegeneric:1 . nieważne w sumie, dla potrzeb domowych grunt że działa za drugim razem:)
Jak nie sprawdzam errorcode a nie ma folderu to przy próbie kasowania folderu zwraca false i error code = 0 i print że nie może skasować folderu.

0

To zawołaj jeszcze errcode.message() bo ten kod nic mi nie mówi https://en.cppreference.com/w/cpp/error/error_code/message.

1 użytkowników online, w tym zalogowanych: 0, gości: 1