Share via


<filesystem> 함수

헤더의 <filesystem> 이러한 무료 함수는 경로, 파일, symlink, 디렉터리 및 볼륨에 대한 수정 및 쿼리 작업을 수행합니다. 자세한 내용 및 코드 예제를 보려면 파일 시스템 탐색(C++)을 참조하세요.

absolute

path absolute(const path& pval, const path& base = current_path());

이 함수는 경로 이름 base에 상대적인 pval에 해당하는 절대 경로 이름을 반환합니다.

  1. pval.has_root_name() && pval.has_root_directory()인 경우 함수는 pval를 반환합니다.

  2. pval.has_root_name() && !pval.has_root_directory()인 경우 함수는 pval.root_name() / absolute(base).root_directory() / absolute(base).relative_path() / pval.relative_path()를 반환합니다.

  3. !pval.has_root_name() && pval.has_root_directory()인 경우 함수는 absolute(base).root_name() / pval를 반환합니다.

  4. !pval.has_root_name() && !pval.has_root_directory()인 경우 함수는 absolute(base) / pval를 반환합니다.

begin

const directory_iterator& begin(const directory_iterator& iter) noexcept;
const recursive_directory_iterator&
    begin(const recursive_directory_iterator& iter) noexcept;

두 함수 모두 iter를 반환합니다.

canonical

path canonical(const path& pval, const path& base = current_path());
path canonical(const path& pval, error_code& ec);
path canonical(const path& pval, const path& base, error_code& ec);

함수는 모두 절대 경로 이름 pabs = absolute(pval, base) (또는 pabs = absolute(pval) 기본 매개 변수가 없는 오버로드)을 형성한 다음, 다음 단계 시퀀스에서 정식 형식으로 줄입니다.

  1. 에 의해 대체read_symlink(X)되는 is_symlink(X) 모든 경로 구성 요소 X 입니다true.

  2. 모든 경로 구성 요소(점이 이전 경로 구성 . 요소에 의해 설정된 현재 디렉터리임)가 제거됩니다.

  3. 모든 경로 구성 요소 X/.. 쌍(점점은 이전 경로 구성 요소에 의해 설정된 부모 디렉터리임)이 제거됩니다.

그런 다음 함수는 .를 반환합니다 pabs.

copy

void copy(const path& from, const path& to);
void copy(const path& from, const path& to, error_code& ec) noexcept;
void copy(const path& from, const path& to, copy_options opts);
void copy(const path& from, const path& to, copy_options opts, error_code& ec) noexcept;

함수는 모두 매개 변수가 없는 opts 오버로드에 대해 copy_options::none 수행되는 제어 대상opts에서하나 이상의 파일을 복사하거나 연결할 수 있습니다. opts에는 다음 중 하나만 포함되어야 합니다.

  • skip_existing, overwrite_existing 또는 update_existing

  • copy_symlinks 또는 skip_symlinks

  • directories_only, create_symlinks 또는 create_hard_links

함수는 먼저 다음의 file_상태 값을 ft 결정합니다.

  • if opts & (copy_options::create_symlinks | copy_options::skip_symlinks),를 호출하여 symlink_status

  • 그렇지 않으면 호출하여 status

  • 그렇지 않으면 오류를 보고합니다.

이 경우 !exists(f) || equivalent(f, t) || is_other(f) || is_other(t) || is_directory(f)&& is_regular_file(t)오류를 보고하고 다른 작업을 수행하지 않습니다.

그렇지 않은 경우 다음을 수행합니다 is_symlink(f) .

  • 이면 options & copy_options::skip_symlinks아무 것도 수행하지 않습니다.

  • 그렇지 않으면 , !exists(t)&& options & copy_options::copy_symlinks.copy_symlink(from, to, opts)

  • 그렇지 않으면 오류를 보고합니다.

그렇지 않으면 다음을 수행합니다.is_regular_file(f)

  • 이면 opts & copy_options::directories_only아무 것도 수행하지 않습니다.

  • 그렇지 않으면 , opts & copy_options::create_symlinks.create_symlink(to, from)

  • 그렇지 않으면 , opts & copy_options::create_hard_links.create_hard_link(to, from)

  • 그렇지 않으면 , is_directory(f).copy_file(from, to / from.filename(), opts)

  • 그렇지 않으면 copy_file(from, to, opts)입니다.

그렇지 않으면 다음을 수행합니다.is_directory(f) && (opts & copy_options::recursive || !opts)

if (!exists(t))
{  // copy directory contents recursively
    create_directory(to, from, ec);

    for (directory_iterator next(from), end; ec == error_code() && next != end; ++next)
    {
        copy(next->path(), to / next->path().filename(), opts, ec);
    }
}

그렇지 않으면 아무 작업도 수행하지 않습니다.

copy_file

bool copy_file(const path& from, const path& to);
bool copy_file(const path& from, const path& to, error_code& ec) noexcept;
bool copy_file(const path& from, const path& to, copy_options opts);
bool copy_file(const path& from, const path& to, copy_options opts, error_code& ec) noexcept;

함수는 모두 매개 변수가 없는 opts 오버로드에 대해 copy_options::none 수행되는 파일을 제어opts할 때 파일을 복사 할 수 있습니다. opts은 최대 하나 또는 .를 skip_existingoverwrite_existingupdate_existing포함해야 한다.

이면 exists(to) && !(opts & (copy_options::skip_existing | copy_options::overwrite_existing | copy_options::update_existing))파일이 이미 있다는 오류로 보고합니다.

그렇지 않으면 !exists(to) || opts & copy_options::overwrite_existing || opts & copy_options::update_existing&& last_write_time(to) < last_write_time(from) || !(opts & (copy_options::skip_existing | copy_options::overwrite_existing | copy_options:update_existing))파일의 내용과 특성을 파일 복사하려고 시도합니다. 복사 시도가 실패하는 경우 오류로 보고합니다.

복사본이 시도되고 성공하면 함수가 반환되고, 그렇지 않으면 false반환 true 됩니다.

void copy_symlink(const path& from, const path& to);
void copy_symlink(const path& from, const path& to, error_code& ec) noexcept;

이 경우 is_directory(from)함수는 .를 호출합니다 create_directory_symlink(from, to). 그렇지 않으면 호출 create_symlink(from, to)합니다.

create_directories

bool create_directories(const path& pval);
bool create_directories(const path& pval, error_code& ec) noexcept;

같은 a\/b\/c경로 이름의 경우 함수는 필요에 따라 디렉터리를 aa\/b 만들 수 있도록 필요에 따라 디렉터리를 a\/b\/c 만듭니다. 실제로 디렉터리를 만드는 경우에만 반환 true 됩니다 pval.

create_directory

bool create_directory(const path& pval);

bool create_directory(const path& pval, error_code& ec) noexcept;
bool create_directory(const path& pval, const path& attr);
bool create_directory(const path& pval, const path& attr, error_code& ec) noexcept;

이 함수는 필요에 따라 디렉터리 pval을 만듭니다. 실제로 디렉터리를 만드는 경우에만 반환 true 되며, 이 경우 기존 파일attr에서 사용 권한을 복사하거나 매개 변수 없이 attr 오버로드에 사용합니다perms::all.pval

void create_directory_symlink(const path& to, const path& link);
void create_directory_symlink(const path& to, const path& link, error_code& ec) noexcept;

함수는 디렉터리에 대한 symlink로 링크를 만듭니다.

void create_hard_link(const path& to,  const path& link);
void create_hard_link(const path& to, const path& link, error_code& ec) noexcept;

함수는 디렉터리 또는 파일에 대한 하드 링크로 링크를 만듭니다.

void create_symlink(const path& to, const path& link);

void create_symlink(const path& to, const path& link, error_code& ec) noexcept;

함수는 파일에 대한 symlink로 만듭니다link.

current_path

path current_path();
path current_path(error_code& ec);
void current_path(const path& pval);
void current_path(const path& pval, error_code& ec) noexcept;

매개 변수 pval이 없는 함수는 현재 디렉터리에 대한 경로 이름을 반환합니다. 나머지 함수는 현재 디렉터리를 pval로 설정합니다.

end

directory_iterator& end(const directory_iterator& iter) noexcept;
recursive_directory_iterator& end(const recursive_directory_iterator& iter) noexcept;

첫 번째 함수가 반환 directory_iterator() 되고 두 번째 함수가 반환됩니다. recursive_directory_iterator()

equivalent

bool equivalent(const path& left, const path& right);
bool equivalent(const path& left, const path& right, error_code& ec) noexcept;

함수는 왼쪽오른쪽에서 동일한 파일 시스템 엔터티를 선택하는 경우에만 반환 true 됩니다.

exists

bool exists(file_status stat) noexcept;
bool exists(const path& pval);
bool exists(const path& pval, error_code& ec) noexcept;

첫 번째 함수는 status_known && stat.type() != file_not_found를 반환합니다. 두 번째 및 세 번째 함수는 .exists(status(pval))

file_size

uintmax_t file_size(const path& pval);
uintmax_t file_size(const path& pval, error_code& ec) noexcept;

함수는 선택한 파일 pval의 크기(바이트)를 반환하고 파일 크기를 확인할 수 있는 경우 exists(pval) && is_regular_file(pval) 반환합니다. 그렇지 않으면 오류를 보고하고 반환 uintmax_t(-1)합니다.

uintmax_t hard_link_count(const path& pval);
uintmax_t hard_link_count(const path& pval, error_code& ec) noexcept;

이 함수는 오류 발생 시 하드 링크 pval수를 반환하거나 -1을 반환합니다.

hash_value

size_t hash_value(const path& pval) noexcept;

함수는 에 대한 해시 값을 반환합니다 pval.native().

is_block_file

bool is_block_file(file_status stat) noexcept;
bool is_block_file(const path& pval);
bool is_block_file(const path& pval, error_code& ec) noexcept;

첫 번째 함수는 stat.type() == file_type::block를 반환합니다. re기본ing 함수는 반환is_block_file(status(pval))합니다.

is_character_file

bool is_character_file(file_status stat) noexcept;
bool is_character_file(const path& pval);
bool is_character_file(const path& pval, error_code& ec) noexcept;

첫 번째 함수는 stat.type() == file_type::character를 반환합니다. re기본ing 함수는 반환is_character_file(status(pval))합니다.

is_directory

bool is_directory(file_status stat) noexcept;
bool is_directory(const path& pval);
bool is_directory(const path& pval, error_code& ec) noexcept;

첫 번째 함수는 stat.type() == file_type::directory를 반환합니다. re기본ing 함수는 반환is_directory_file(status(pval))합니다.

is_empty

bool is_empty(file_status stat) noexcept;
bool is_empty(const path& pval);
bool is_empty(const path& pval, error_code& ec) noexcept;

이면 is_directory(pval)함수가 반환 directory_iterator(pval) == directory_iterator()됩니다. 그렇지 않으면 반환됩니다 file_size(pval) == 0.

is_fifo

bool is_fifo(file_status stat) noexcept;
bool is_fifo(const path& pval);
bool is_fifo(const path& pval, error_code& ec) noexcept;

첫 번째 함수는 stat.type() == file_type::fifo를 반환합니다. re기본ing 함수는 반환is_fifo(status(pval))합니다.

is_other

bool is_other(file_status stat) noexcept;
bool is_other(const path& pval);
bool is_other(const path& pval, error_code& ec) noexcept;

첫 번째 함수는 stat.type() == file_type::other를 반환합니다. re기본ing 함수는 반환is_other(status(pval))합니다.

is_regular_file

bool is_regular_file(file_status stat) noexcept;
bool is_regular_file(const path& pval);
bool is_regular_file(const path& pval, error_code& ec) noexcept;

첫 번째 함수는 stat.type() == file_type::regular를 반환합니다. re기본ing 함수는 반환is_regular_file(status(pval))합니다.

is_socket

bool is_socket(file_status stat) noexcept;
bool is_socket(const path& pval);
bool is_socket(const path& pval, error_code& ec) noexcept;

첫 번째 함수는 stat.type() == file_type::socket를 반환합니다. re기본ing 함수는 반환is_socket(status(pval))합니다.

bool is_symlink(file_status stat) noexcept;
bool is_symlink(const path& pval);
bool is_symlink(const path& pval, error_code& ec) noexcept;

첫 번째 함수는 stat.type() == file_type::symlink를 반환합니다. re기본ing 함수는 반환is_symlink(status(pval))합니다.

last_write_time

file_time_type last_write_time(const path& pval);
file_time_type last_write_time(const path& pval, error_code& ec) noexcept;
void last_write_time(const path& pval, file_time_type new_time);
void last_write_time(const path& pval, file_time_type new_time, error_code& ec) noexcept;

처음 두 함수는 마지막 데이터 수정 pval시간을 반환하거나 file_time_type(-1) 오류가 발생하는 경우 반환합니다. 마지막 두 함수는 마지막 데이터 수정 pval 시간을 .로 new_time설정합니다.

permissions

void permissions(const path& pval, perms mask);
void permissions(const path& pval, perms mask, error_code& ec) noexcept;

함수는 선택한 경로 이름 pval 에 대한 사용 권한을 제어perms & (perms::add_perms | perms::remove_perms)할 수 있도록 mask & perms::mask 설정합니다. mask 은 최대 하나 perms::add_perms 만 포함해야 한다 perms::remove_perms.

이 경우 mask & perms::add_perms함수는 사용 권한을 status(pval).permissions() | mask & perms::mask.로 설정합니다. 그렇지 않으면 mask & perms::remove_perms함수가 사용 권한을 .로 설정합니다.status(pval).permissions() & ~(mask & perms::mask) 그렇지 않으면 함수는 사용 권한을 mask & perms::mask.로 설정합니다.

proximate

path proximate(const path& p, error_code& ec);
path proximate(const path& p, const path& base = current_path());
path proximate(const path& p, const path& base, error_code& ec);
path read_symlink(const path& pval);
path read_symlink(const path& pval, error_code& ec);

함수는 오류를 보고하고 다음 경우 !is_symlink(pval)반환 path() 합니다. 그렇지 않은 경우 함수는 기호 링크를 포함하는 path 형식의 개체를 반환합니다.

relative

path relative(const path& p, error_code& ec);
path relative(const path& p, const path& base = current_path());
path relative(const path& p, const path& base, error_code& ec);

remove

bool remove(const path& pval);
bool remove(const path& pval, error_code& ec) noexcept;

함수는 파일이 성공적으로 제거된 경우에만 exists(symlink_status(pval)) 반환 true 됩니다. symlink 자체는 선택한 파일이 아니라 제거됩니다.

remove_all

uintmax_t remove_all(const path& pval);
uintmax_t remove_all(const path& pval, error_code& ec) noexcept;

pval이 디렉터리이면 함수는 모든 디렉터리 항목을 재귀적으로 제거한 다음 항목 자체를 제거합니다. 그렇지 않으면 함수가 .를 호출 remove합니다. 함수는 성공적으로 제거된 모든 요소의 수를 반환합니다.

rename

void rename(const path& from, const path& to);
void rename(const path& from, const path& to, error_code& ec) noexcept;

함수의 이름을 바꿉니다. symlink 자체는 선택한 파일이 아니라 이름이 바뀝니다.

resize_file

void resize(const path& pval, uintmax_t size);
void resize(const path& pval, uintmax_t size, error_code& ec) noexcept;

함수는 파일의 크기를 변경합니다. file_size(pval) == size

space

space_info space(const path& pval);
space_info space(const path& pval, error_code& ec) noexcept;

이 함수는 형식 space_info구조에서 선택한 pval볼륨에 대한 정보를 반환합니다. 구조체에는 uintmax_t(-1) 확인할 수 없는 모든 값이 포함됩니다.

status

file_status status(const path& pval);
file_status status(const path& pval, error_code& ec) noexcept;

함수는 연결된 pval경로 이름 상태, 파일 형식 및 사용 권한을 반환합니다. symlink 자체는 테스트되지 않고 선택한 파일입니다.

status_known

bool status_known(file_status stat) noexcept;

함수가 반환됩니다. stat.type() != file_type::none

swap

void swap(path& left, path& right) noexcept;

함수는 왼쪽오른쪽내용을 교환합니다.

file_status symlink_status(const path& pval);
file_status symlink_status(const path& pval, error_code& ec) noexcept;

함수는 연결된 pvalpathname symlink 상태, 파일 형식 및 사용 권한을 반환합니다. 함수는 선택한 파일이 아니라 symlink 자체가 테스트된다는 점을 제외하고 동일하게 status(pval) 동작합니다.

system_complete

path system_complete(const path& pval);
path system_complete(const path& pval, error_code& ec);

이 함수는 필요에 따라 루트 이름과 연결된 현재 디렉터리를 고려하는 절대 경로 이름을 반환합니다. (POSIX의 경우 함수가 반환 absolute(pval)됨).

temp_directory_path

path temp_directory_path();
path temp_directory_path(error_code& ec);

이 함수는 임시 파일을 포함하는 데 적합한 디렉터리의 경로 이름을 반환합니다.

u8path

template <class Source>
path u8path(const Source& source);

template <class InIt>
path u8path(InIt first, InIt last);

첫 번째 함수는 파일 시스템에 관계없이 UTF-8로 인코딩된 문자 요소 시퀀스로 각 사례에서 선택한 소스가 수행된다는 점을 제외하고 두 번째 함수와 동일하게 path(source) 동작 path(first, last) 합니다.

weakly_canonical

path weakly_canonical(const path& p);
path weakly_canonical(const path& p, error_code& ec);