Aracılığıyla paylaş


<filesystem> işlevleri

Üst bilgideki <filesystem> bu ücretsiz işlevler yollarda, dosyalarda, symlink'lerde, dizinlerde ve birimlerde işlemleri değiştirir ve sorgular. Daha fazla bilgi ve kod örnekleri için bkz . Dosya Sistemi Gezintisi (C++).

absolute

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

İşlev, yol adına karşılık gelen pval mutlak yol adını basedöndürür:

  1. İşlev döndürürse pval.has_root_name() && pval.has_root_directory()pval.

  2. İşlev döndürürsepval.has_root_name() && !pval.has_root_directory() / pval.root_name() / / absolute(base).relative_path()absolute(base).root_directory()pval.relative_path().

  3. İşlev döndürürse!pval.has_root_name() && pval.has_root_directory() / absolute(base).root_name()pval.

  4. İşlev döndürürse!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;

her iki işlev de döndürür 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);

İşlevlerin tümü mutlak bir yol adı pabs = absolute(pval, base) (veya pabs = absolute(pval) temel parametresi olmayan aşırı yükleme için) oluşturur ve ardından aşağıdaki adım dizisinde kurallı bir biçime küçültür:

  1. ile is_symlink(X)true değiştirilen read_symlink(X)her yol bileşeniX.

  2. Her yol bileşeni . (nokta, önceki yol bileşenleri tarafından oluşturulan geçerli dizindir) kaldırılır.

  3. Her yol bileşeni X/.. çifti (nokta-nokta, önceki yol bileşenleri tarafından oluşturulan üst dizindir) kaldırılır.

İşlev daha sonra döndürür 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;

İşlevlerin tümü, parametresiz opts aşırı yüklemeler için olarak copy_options::none alınan bir veya daha fazla dosyayı uygulamasındanoptsdenetimine kopyalar veya bağlar. opts aşağıdakilerden en fazla birini içermelidir:

  • skip_existing, overwrite_existing veya update_existing

  • copy_symlinks veya skip_symlinks

  • directories_only, create_symlinks veya create_hard_links

İşlevler önce için ve içintfile_status değerlerini fbelirler:

  • ise opts & (copy_options::create_symlinks | copy_options::skip_symlinks), arayarak symlink_status

  • aksi takdirde, status

  • Aksi takdirde bir hata bildirin.

ise !exists(f) || equivalent(f, t) || is_other(f) || is_other(t) || is_directory(f)&& is_regular_file(t)bir hata bildirir (ve başka bir şey yapmaz).

Aksi takdirde, şu durumda is_symlink(f) :

  • ise options & copy_options::skip_symlinkshiçbir şey yapma.

  • Aksi takdirde, ise !exists(t)&& options & copy_options::copy_symlinks, sonra copy_symlink(from, to, opts).

  • Aksi takdirde bir hata bildirin.

Aksi takdirde, ise is_regular_file(f):

  • ise opts & copy_options::directories_onlyhiçbir şey yapma.

  • Aksi takdirde, ise opts & copy_options::create_symlinks, sonra create_symlink(to, from).

  • Aksi takdirde, ise opts & copy_options::create_hard_links, sonra create_hard_link(to, from).

  • Aksi takdirde, ise is_directory(f), sonra / copy_file(from, tofrom.filename(), opts) .

  • Tersi durumda copy_file(from, to, opts).

Aksi takdirde, ise 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);
    }
}

Aksi takdirde, hiçbir şey yapma.

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;

İşlevlerin tümü, parametresiz aşırı yüklemeler için olarak copy_options::none alınan dosyasındaki dosyasını konumundandenetimi optsaltına kopyalar.opts opts, veya update_existingöğelerinden skip_existingoverwrite_existingen fazla birini içermelidir.

ise exists(to) && !(opts & (copy_options::skip_existing | copy_options::overwrite_existing | copy_options::update_existing)), dosyanın zaten var olduğunu bir hata olarak bildirin.

Aksi takdirde, ise !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))dosyasının içeriğini ve özniteliklerini dosyasından dosyasına kopyalamayı dener. Kopyalama girişimi başarısız olursa hata olarak bildirin.

Kopyalama denenirse ve başarılı olursa, işlevleri döndürür true , aksi takdirde false.

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

ise is_directory(from)işlevi öğesini çağırır create_directory_symlink(from, to). Aksi takdirde öğesini çağırır create_symlink(from, to).

create_directories

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

gibi bir yol adı için a\/b\/c, işlevi gerektiğinde dizini oluşturabilmesi için dizinleri a ve a\/b gerektiğinde oluşturur a\/b\/c . Yalnızca dizinini pvalgerçekten oluşturduğunda döndürürtrue.

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;

işlevi gerektiğinde dizini pval oluşturur. Yalnızca dizinini gerçekten oluşturduğunda döndürürtrue; bu durumda mevcut dosyadan attrizinleri kopyalar veya parametresiz attr aşırı yüklemeler için kullanırperms::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;

işlevi, dizinine bir symlink olarak bağlantı oluşturur.

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

işlevi, dizinine veya dosyasına sabit bağlantı olarak bağlantı oluşturur.

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

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

işlevi, dosyasına bir symlink olarak oluştururlink.

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;

Parametresiz pval işlevler geçerli dizin için yol adını döndürür. Kalan işlevler geçerli dizini olarak pvalayarlar.

end

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

İlk işlev, directory_iterator() ikinci işlev döndürür recursive_directory_iterator()

equivalent

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

İşlevler yalnızca sol ve sağ aynı dosya sistemi varlığını seçerse dönertrue.

exists

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

İlk işlev döndürür status_known && stat.type() != file_not_found. İkinci ve üçüncü işlevler döndürür exists(status(pval)).

file_size

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

İşlevler, tarafından seçilen pvaldosyanın bayt cinsinden boyutunu döndürür, eğer exists(pval) && is_regular_file(pval) ve dosya boyutu belirlenebilir. Aksi takdirde bir hata bildirir ve döndürür uintmax_t(-1).

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

İşlev, için sabit bağlantı pvalsayısını veya hata oluşursa -1 değerini döndürür.

hash_value

size_t hash_value(const path& pval) noexcept;

işlevi için pval.native()bir karma değeri döndürür.

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;

İlk işlev döndürür stat.type() == file_type::block. Kalan işlevler döndürür 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;

İlk işlev döndürür stat.type() == file_type::character. Kalan işlevler döndürür 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;

İlk işlev döndürür stat.type() == file_type::directory. Kalan işlevler döndürür 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;

ise is_directory(pval)işlevi döndürür directory_iterator(pval) == directory_iterator(); aksi takdirde döndürür 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;

İlk işlev döndürür stat.type() == file_type::fifo. Kalan işlevler döndürür 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;

İlk işlev döndürür stat.type() == file_type::other. Kalan işlevler döndürür 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;

İlk işlev döndürür stat.type() == file_type::regular. Kalan işlevler döndürür 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;

İlk işlev döndürür stat.type() == file_type::socket. Kalan işlevler döndürür 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;

İlk işlev döndürür stat.type() == file_type::symlink. Kalan işlevler döndürür 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;

İlk iki işlev için pvalson veri değişikliğinin zamanını veya file_time_type(-1) bir hata oluşursa döndürür. Son iki işlev için pval son veri değişikliğinin zamanını olarak new_timeayarlar.

permissions

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

İşlevler tarafından pval seçilen yol adının izinlerini denetimi perms & (perms::add_perms | perms::remove_perms)altında olarak mask & perms::mask ayarlar. maskve perms::remove_perms'lerinden perms::add_perms en fazla birini içermelidir.

ise mask & perms::add_perms, işlevler izinleri olarak status(pval).permissions() | mask & perms::maskayarlar. Aksi takdirde, işlevleri mask & perms::remove_permsizinleri olarak status(pval).permissions() & ~(mask & perms::mask)ayarlar. Aksi takdirde, işlevler izinleri olarak mask & perms::maskayarlar.

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);

İşlevler bir hata bildirir ve ise !is_symlink(pval)döndürürpath(). Aksi takdirde, işlevler sembolik bağlantıyı içeren türde path bir nesne döndürür.

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;

İşlevler yalnızca dosya başarıyla kaldırılırsa exists(symlink_status(pval)) döndürülertrue. Symlink'in kendisi kaldırılır, seçtiği dosya kaldırılmaz.

remove_all

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

Bir dizinse pval , işlevler tüm dizin girdilerini özyinelemeli olarak kaldırır ve girdinin kendisini kaldırır. Aksi takdirde işlevler çağrısında removebulunur. Başarıyla kaldırılan tüm öğelerin sayısını döndürür.

rename

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

İşlevler olarak olarak yeniden adlandırır. Bir symlink, seçtiği dosya değil, kendisi yeniden adlandırılır.

resize_file

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

İşlevler bir dosyanın boyutunu değiştirerek file_size(pval) == size

space

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

işlevi tarafından pvalseçilen birim hakkındaki bilgileri türünde space_infobir yapıda döndürür. Yapı, belirlenemez herhangi bir değer için içerir uintmax_t(-1) .

status

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

İşlevler ile pvalilişkilendirilmiş yol adı durumunu, dosya türünü ve izinleri döndürür. Bir symlink kendisi test değildir, ancak seçtiği dosyadır.

status_known

bool status_known(file_status stat) noexcept;

İşlev şunu döndürür: stat.type() != file_type::none

swap

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

İşlev, sol ve sağın içeriğini değiştirir.

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

İşlevler, ile pvalilişkilendirilmiş yol adı symlink durumunu, dosya türünü ve izinleri döndürür. İşlevler, symlink'in seçtiği dosya değil, kendisi test edilmiş olması dışında aynı status(pval) şekilde davranır.

system_complete

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

İşlevler, gerektiğinde kök adıyla ilişkilendirilmiş geçerli dizini dikkate alan mutlak bir yol adı döndürür. (POSIX için işlevler döndürür absolute(pval)).

temp_directory_path

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

İşlevler, geçici dosyalar içermeye uygun bir dizin için yol adı döndürür.

u8path

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

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

İlk işlev ile path(source) aynı, ikinci işlev ise her durumda seçilen kaynağın UTF-8 olarak kodlanmış karakter öğelerinin dizisi olarak alınması dışında, dosya sistemiyle path(first, last) aynı şekilde davranır.

weakly_canonical

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