Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Funções
Important
O <experimental/filesystem> cabeçalho e o std::experimental::filesystem namespace forneceram uma implementação pré-teste da TS (Especificação Técnica do Sistema de Arquivos). Esta documentação é retida para o código gravado na implementação original do sistema de arquivos do MSVC, que foi removida a partir da versão 14.51 do MSVC. Para novo código, use o cabeçalho C++17 <filesystem> e o std::filesystem namespace. Para obter os equivalentes padrão dessas funções, consulte <filesystem> as funções.
Essas funções gratuitas no <experimental/filesystem> cabeçalho modificam e consultam operações em caminhos, arquivos, symlinks, diretórios e volumes. Para obter mais informações e exemplos de código, consulte Navegação do Sistema de Arquivos (C++).
Requirements
Cabeçalho:<experimental/filesystem>
Namespace:std::experimental::filesystem
absolute
path absolute(const path& pval, const path& base = current_path());
A função retorna o nome de caminho absoluto correspondente ao pval nome do caminho base:
Se
pval.has_root_name() && pval.has_root_directory()a função retornarpval.Se
pval.has_root_name() && !pval.has_root_directory()a função retornarpval.root_name()/ /absolute(base).root_directory()/absolute(base).relative_path()pval.relative_path().Se
!pval.has_root_name() && pval.has_root_directory()a função retornarabsolute(base).root_name()/pval.Se
!pval.has_root_name() && !pval.has_root_directory()a função retornarabsolute(base)/pval.
begin
const directory_iterator& begin(const directory_iterator& iter) noexcept;
const recursive_directory_iterator&
begin(const recursive_directory_iterator& iter) noexcept;
Ambas as funções retornam 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);
Todas as funções formam um nome de caminho pabs = absolute(pval, base) absoluto (ou pabs = absolute(pval) para a sobrecarga sem parâmetro base) e, em seguida, reduzem-no a um formulário canônico na seguinte sequência de etapas:
Substitua cada componente
Xde caminho pelo qualis_symlink(X)estátrueread_symlink(X).Remova cada componente
.de caminho (ponto é o diretório atual estabelecido pelos componentes de caminho anteriores).Remova cada par de componentes
X/..de caminho (dot-dot é o diretório pai estabelecido por componentes de caminho anteriores).
Em seguida, a função retorna 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;
Todas as funções possivelmente copiam ou vinculam um ou mais arquivos from sob to controle opts, o que é usado para copy_options::none as sobrecargas sem opts parâmetro.
opts deve conter no máximo um dos seguintes:
skip_existing,overwrite_existingouupdate_existingcopy_symlinksouskip_symlinksdirectories_only,create_symlinksoucreate_hard_links
As funções primeiro determinam os file_status valores f para from e t para to. Eles usam symlink_status quando opts contém copy_options::create_symlinks, copy_options::skip_symlinksou copy_options::copy_symlinks, conforme necessário para a origem ou destino. Caso contrário, eles usarão status.
Se !exists(f) || equivalent(f, t) || is_other(f) || is_other(t) || is_directory(f)&& is_regular_file(t)as funções relatarem um erro e pararem. Caso contrário, se is_symlink(f), então:
Se
options & copy_options::skip_symlinks, então não faça nada.Caso contrário, se
!exists(t) && options & copy_options::copy_symlinks, entãocopy_symlink(from, to).Caso contrário, relate um erro.
Caso contrário, se is_regular_file(f), então:
Se
opts & copy_options::directories_only, então não faça nada.Caso contrário, se
opts & copy_options::create_symlinks, entãocreate_symlink(from, to).Caso contrário, se
opts & copy_options::create_hard_links, entãocreate_hard_link(from, to).Caso contrário, se
is_directory(t), entãocopy_file(from, to / from.filename(), opts).Caso contrário,
copy_file(from, to, opts).
Caso contrário, se is_directory(f) && (opts & copy_options::recursive || !opts), então:
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);
}
}
Caso contrário, não continue com os procedimentos.
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;
Todas as funções possivelmente copiam o arquivo from para to sob controle opts, o que é feito quanto copy_options::none às sobrecargas sem opts parâmetro.
opts deve conter no máximo um de skip_existing, overwrite_existingou update_existing.
Se exists(to) && !(opts & (copy_options::skip_existing | copy_options::overwrite_existing | copy_options::update_existing)), em seguida, relatar como um erro que o arquivo já existe.
Caso contrário, se !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)), tentar copiar o conteúdo e os atributos do arquivo from para o arquivo to. Relate como um erro se a tentativa de cópia falhar.
As funções retornarão true se a cópia for bem-sucedida e false , caso contrário.
copy_symlink
void copy_symlink(const path& from, const path& to);
void copy_symlink(const path& from, const path& to, error_code& ec) noexcept;
If is_directory(from), a função chama create_directory_symlink(from, to). Caso contrário, ela chamará create_symlink(from, to).
create_directories
bool create_directories(const path& pval);
bool create_directories(const path& pval, error_code& ec) noexcept;
Para um nome de caminho, como a\/b\/c, a função cria diretórios a e a\/b , conforme necessário, para que possa criar o diretório a\/b\/c. Ele retornará true somente se ele realmente criar o diretório 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;
A função cria o diretório pval conforme necessário. Ele retornará true somente se ele realmente criar o diretório pval. Se você especificar o attr parâmetro, a função copiará permissões do arquivo existente. Se você não especificar o attr parâmetro, a função usará perms::all.
create_directory_symlink
void create_directory_symlink(const path& to, const path& link);
void create_directory_symlink(const path& to, const path& link, error_code& ec) noexcept;
A função cria link como um symlink para o diretório to.
create_hard_link
void create_hard_link(const path& to, const path& link);
void create_hard_link(const path& to, const path& link, error_code& ec) noexcept;
A função cria link como um link rígido para o diretório ou arquivo to.
create_symlink
void create_symlink(const path& to, const path& link);
void create_symlink(const path& to, const path& link, error_code& ec) noexcept;
A função cria link como um symlink para o arquivo to.
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;
As funções sem parâmetro pval retornam o nome do caminho para o diretório atual. As funções restantes definem o diretório atual como pval.
end
directory_iterator end(const directory_iterator&) noexcept;
recursive_directory_iterator end(const recursive_directory_iterator&) noexcept;
A primeira função retorna directory_iterator() e a segunda função retorna recursive_directory_iterator().
equivalent
bool equivalent(const path& left, const path& right);
bool equivalent(const path& left, const path& right, error_code& ec) noexcept;
As funções retornarão true somente se a esquerda e a direita se referirem à mesma entidade do sistema de arquivos.
exists
bool exists(file_status stat) noexcept;
bool exists(const path& pval);
bool exists(const path& pval, error_code& ec) noexcept;
A primeira função retorna status_known(stat) && stat.type() != file_type::not_found. A segunda e a terceira funções retornam exists(status(pval)).
file_size
uintmax_t file_size(const path& pval);
uintmax_t file_size(const path& pval, error_code& ec) noexcept;
As funções retornam o tamanho em bytes do arquivo escolhido por pval, se exists(pval) && is_regular_file(pval) e o tamanho do arquivo pode ser determinado. Caso contrário, eles relatam um erro e retornam uintmax_t(-1).
hard_link_count
uintmax_t hard_link_count(const path& pval);
uintmax_t hard_link_count(const path& pval, error_code& ec) noexcept;
A função retorna o número de links rígidos para pval, ou -1 se ocorrer um erro.
hash_value
size_t hash_value(const path& pval) noexcept;
A função retorna um valor de hash para 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;
A primeira função retorna stat.type() == file_type::block. As funções restantes retornam 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;
A primeira função retorna stat.type() == file_type::character. As funções restantes retornam 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;
A primeira função retorna stat.type() == file_type::directory. As funções restantes retornam is_directory(status(pval)).
is_empty
bool is_empty(const path& pval);
bool is_empty(const path& pval, error_code& ec) noexcept;
Se is_directory(pval), a função retornará directory_iterator(pval) == directory_iterator(). Caso contrário, ele retornará 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;
A primeira função retorna stat.type() == file_type::fifo. As funções restantes retornam 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;
A primeira função retorna exists(stat) && !is_regular_file(stat) && !is_directory(stat) && !is_symlink(stat). As funções restantes retornam 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;
A primeira função retorna stat.type() == file_type::regular. As funções restantes retornam 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;
A primeira função retorna stat.type() == file_type::socket. As funções restantes retornam is_socket(status(pval)).
is_symlink
bool is_symlink(file_status stat) noexcept;
bool is_symlink(const path& pval);
bool is_symlink(const path& pval, error_code& ec) noexcept;
A primeira função retorna stat.type() == file_type::symlink. As funções restantes retornam 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;
As duas primeiras funções retornam a hora da última modificação pvalde dados ou file_time_type(-1) se ocorrer um erro. As duas últimas funções definem a hora da última modificação de dados para pvalnew_time.
permissions
void permissions(const path& pval, perms mask);
void permissions(const path& pval, perms mask, error_code& ec) noexcept;
As funções definem as permissões para o nome de caminho escolhido para pvalmask & perms::mask sob controle de perms & (perms::add_perms | perms::remove_perms).
mask contém no máximo um dos perms::add_perms e perms::remove_perms.
Se mask & perms::add_perms, as funções definem as permissões como status(pval).permissions() | mask & perms::mask. Caso contrário, se mask & perms::remove_permsas funções definirem as permissões como status(pval).permissions() & ~(mask & perms::mask). Caso contrário, as funções definem as permissões como mask & perms::mask.
read_symlink
path read_symlink(const path& pval);
path read_symlink(const path& pval, error_code& ec);
As funções relatam um erro e retornam path() se !is_symlink(pval). Caso contrário, as funções retornarão um objeto do tipo path que contém o link simbólico.
remove
bool remove(const path& pval);
bool remove(const path& pval, error_code& ec) noexcept;
As funções retornarão true somente se exists(symlink_status(pval)) e o arquivo for removido com êxito. Um symlink é removido, não o arquivo escolhido.
remove_all
uintmax_t remove_all(const path& pval);
uintmax_t remove_all(const path& pval, error_code& ec) noexcept;
Se pval for um diretório, as funções removerão recursivamente todas as entradas de diretório e, em seguida, a entrada em si. Caso contrário, as funções chamarão remove. Eles retornam uma contagem de todos os elementos removidos com êxito.
rename
void rename(const path& from, const path& to);
void rename(const path& from, const path& to, error_code& ec) noexcept;
As funções renomeam from para to. Um symlink é renomeado, não o arquivo escolhido.
resize_file
void resize_file(const path& pval, uintmax_t size);
void resize_file(const path& pval, uintmax_t size, error_code& ec) noexcept;
As funções alteram o tamanho de um arquivo de modo que file_size(pval) == size.
space
space_info space(const path& pval);
space_info space(const path& pval, error_code& ec) noexcept;
A função retorna informações sobre o volume escolhido por pval, em uma estrutura do tipo space_info. A estrutura contém uintmax_t(-1) qualquer valor que não possa ser determinado.
status
file_status status(const path& pval);
file_status status(const path& pval, error_code& ec) noexcept;
As funções retornam o status do nome do caminho, o tipo de arquivo e as permissões, associados pvala . Um symlink em si não é testado, mas o arquivo escolhido por ele.
status_known
bool status_known(file_status stat) noexcept;
A função retorna stat.type() != file_type::none
swap
void swap(path& left, path& right) noexcept;
A função troca o conteúdo da esquerda e da direita.
symlink_status
file_status symlink_status(const path& pval);
file_status symlink_status(const path& pval, error_code& ec) noexcept;
As funções retornam o status do symlink pathname, o tipo de arquivo e as permissões, associados pvala . As funções se comportam da mesma status(pval) forma, exceto que um symlink é testado, não o arquivo escolhido.
system_complete
Note
O C++17 std::filesystem não fornece system_complete. Para o código atual, use std::filesystem::absolute quando ele fornecer o comportamento necessário.
path system_complete(const path& pval);
path system_complete(const path& pval, error_code& ec);
As funções retornam um nome de caminho absoluto que leva em conta, conforme necessário, o diretório atual associado ao nome raiz. Para POSIX, as funções retornam absolute(pval).
temp_directory_path
path temp_directory_path();
path temp_directory_path(error_code& ec);
As funções retornam um nome de caminho para um diretório adequado para conter arquivos temporários.
u8path
template <class Source>
path u8path(const Source& source);
template <class InIt>
path u8path(InIt first, InIt last);
A primeira função se comporta da mesma path(source) forma e a segunda função se comporta da mesma path(first, last) forma que a origem escolhida em cada caso é tomada como uma sequência de elementos char codificados como UTF-8, qualquer que seja o sistema de arquivos.
Consulte também
<experimental/filesystem>
<experimental/filesystem> enumerações
<experimental/filesystem> operadores