Namespaces
Variants

std::filesystem:: remove, std::filesystem:: remove_all

From cppreference.net
헤더 파일에 정의됨 <filesystem>
bool remove ( const std:: filesystem :: path & p ) ;
(1) (C++17부터)
bool remove ( const std:: filesystem :: path & p, std:: error_code & ec ) noexcept ;
(2) (C++17부터)
(3) (C++17부터)
(4) (C++17부터)
1,2) 경로 p 로 식별된 파일 또는 빈 디렉토리가 POSIX remove 에 의해 삭제되는 것처럼 제거됩니다. 심볼릭 링크는 따르지 않습니다(심볼릭 링크 자체가 제거되며 대상은 제거되지 않음).
3,4) p (디렉터리인 경우)의 내용과 모든 하위 디렉터리의 내용을 재귀적으로 삭제한 후, POSIX remove 를 반복적으로 적용하는 것처럼 p 자체를 삭제합니다. 심볼릭 링크는 따라가지 않습니다(심볼릭 링크의 대상이 아닌 심볼릭 링크 자체가 제거됨).

목차

매개변수

p - 삭제할 경로
ec - 비예외 발생 오버로드에서 오류 보고를 위한 출력 매개변수

반환값

1,2) true 파일이 삭제된 경우, false 파일이 존재하지 않았던 경우. error_code& 인수를 받는 오버로드는 오류 발생 시 false 를 반환합니다.
3,4) 존재하지 않는 파일이나 디렉토리를 삭제한 경우(처음부터 p 가 존재하지 않았던 경우) 0을 반환할 수 있습니다. error_code& 인수를 받는 오버로드는 오류 발생 시 static_cast < std:: uintmax_t > ( - 1 ) 를 반환합니다.

예외

noexcept 로 표시되지 않은 모든 오버로드는 메모리 할당이 실패할 경우 std::bad_alloc 을(를) throw할 수 있습니다.

1,3) 기본 OS API 오류 발생 시 std::filesystem::filesystem_error 를 발생시킵니다. 이는 p 를 첫 번째 경로 인수로, OS 오류 코드를 오류 코드 인수로 구성하여 생성됩니다.
2,4) OS API 호출이 실패할 경우 std:: error_code & 매개변수를 OS API 오류 코드로 설정하고, 오류가 발생하지 않을 경우 ec. clear ( ) 를 실행합니다.

참고 사항

POSIX 시스템에서 이 함수는 일반적으로 필요한 경우 unlink rmdir 을 호출하며, Windows에서는 DeleteFileW RemoveDirectoryW 를 호출합니다.

만약 p 가 존재하지 않는다면, 이 함수는 false 를 반환하고 오류를 보고하지 않습니다.

예제

#include <cstdint>
#include <filesystem>
#include <fstream>
#include <iostream>
int main()
{
    namespace fs = std::filesystem;
    std::cout << std::boolalpha;
    fs::path tmp{std::filesystem::temp_directory_path()};
    const auto O_O{"O_O"};
    std::ofstream{tmp / O_O} << O_O; // O_O를 포함하는 파일 생성
    std::cout << "remove(): " << fs::remove(tmp / O_O) << '\n'; // 성공
    std::cout << "remove(): " << fs::remove(tmp / O_O) << '\n'; // 실패
    std::filesystem::create_directories(tmp / "abcdef/example");
    const std::uintmax_t n{fs::remove_all(tmp / "abcdef")};
    std::cout << "remove_all(): " << n << " files or directories\n";
}

가능한 출력:

remove(): true
remove(): false
remove_all(): 2 files or directories

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 3014 C++17 error_code 오버로드의 remove_all 이 noexcept로 표시되었으나 메모리를 할당할 수 있음 noexcept 제거됨

참고 항목

파일을 삭제합니다
(함수)