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.
Para o código atual, inclua o cabeçalho <filesystem> padrão C++17 e use o std::filesystem namespace para classes e funções que manipulam e recuperam informações sobre caminhos, arquivos e diretórios. Compile com /std:c++17 ou posterior.
Sintaxe
#include <filesystem> // C++17 standard header file name
using namespace std::filesystem;
Note
Observação histórica: antes do C++17 padronizado <filesystem>, o MSVC enviava uma implementação de pré-lançamento separada no <experimental/filesystem> cabeçalho, que foi removido a partir das Ferramentas de Build do MSVC versão 14.51. Para obter sua documentação, consulte <experimental/filesystem>.
O <filesystem> cabeçalho dá suporte a sistemas de arquivos para Microsoft Windows e POSIX.
Enquanto a maioria das funcionalidades são comuns para ambos os sistemas operacionais, este documento identifica onde ocorrem as diferenças. Por exemplo:
- O Windows dá suporte a vários nomes de raiz, como
c:ou\\network_name. Um sistema de arquivos consiste em uma floresta de árvores, cada uma com o próprio diretório raiz, comoc:\ou\\network_name\, e cada uma com um diretório próprio atual, para completar um nome de caminho relativo (que não é um nome de caminho absoluto). - O POSIX dá suporte a apenas uma árvore, sem nome de raiz, o único diretório raiz
/e apenas um diretório atual.
Outra diferença significativa é a representação nativa dos nomes de caminho:
O Windows usa uma sequência terminada em nulo de
wchar_t, codificada como UTF-16 (um ou mais elementos para cada caractere).POSIX usa uma sequência terminada em nulo de
char, codificada como UTF-8 (um ou mais elementos para cada caractere).Um objeto da classe
patharmazena o nome do caminho no formato nativo, mas dá suporte à conversão fácil entre esse formato armazenado e vários formatos externos:- Uma sequência de terminação nula de
char, codificada como preferencial para o sistema operacional. - Uma sequência de terminação nula de
char, codificada como UTF-8. - Uma sequência de terminação nula de
wchar_t, codificada como preferencial para o sistema operacional. - Uma sequência de terminação nula de
char16_t, codificada como UTF-16. - Uma sequência de terminação nula de
char32_t, codificada como UTF-32.
Interconversões entre essas representações são mediadas, conforme necessário, pelo uso de uma ou mais facetas de
codecvt. Se nenhum objeto de localidade específico tiver sido designado, essas facetas serão obtidas da localidade global.- Uma sequência de terminação nula de
Outra diferença é o detalhamento com que cada sistema operacional permite especificar permissões de acesso de arquivo ou diretório:
- O Windows registra se um arquivo é somente leitura ou gravável, um atributo que não tem nenhum significado para diretórios.
- O POSIX registra se um arquivo pode ser lido, gravado ou executado (verificado se for um diretório). Ele registra também se cada operação é permitida para o proprietário, o grupo do proprietário ou para todos, além de algumas outras permissões.
É comum aos dois sistemas a estrutura imposta a um nome de caminho quando você passar do nome da raiz. Para o nome do caminho c:/abc/xyz/def.ext:
- O nome da raiz é
c:. - O diretório raiz é
/. - O caminho raiz é
c:/. - O caminho relativo é
abc/xyz/def.ext. - O caminho pai é
c:/abc/xyz. - O nome do arquivo é
def.ext. - O stem é
def. - A extensão é
.ext.
Uma pequena diferença é o separador preferencial entre a sequência de diretórios em um nome de caminho. Os dois sistemas operacionais permitem escrever uma barra /, mas em alguns contextos o Windows prefere uma barra invertida \. A implementação armazena o separador preferencial dela no membro de dados preferred_separator em path.
Por fim, objetos path têm um recurso importante: você pode usá-los sempre que um argumento de nome de arquivo for necessário nas classes definidas no cabeçalho <fstream>.
Para obter mais informações e exemplos de código, confira Navegação do sistema de arquivos (C++).
Classes
| Nome | Descrição |
|---|---|
directory_entry classe |
Descreve um objeto retornado por um directory_iterator ou um recursive_directory_iterator e contém um path. |
directory_iterator classe |
Descreve um iterador de entrada que percorre em sequência os nomes de arquivo no diretório de um sistema de arquivos. |
filesystem_error classe |
Uma classe base para exceções que são lançadas para relatar um erro de sistema de baixo nível. |
path classe |
Define uma classe que armazena um objeto do tipo de modelo String que é adequado para uso como um nome de arquivo. |
recursive_directory_iterator classe |
Descreve um iterador de entrada que percorre em sequência os nomes de arquivo no diretório de um sistema de arquivos. O iterador também pode descer para subdiretórios. |
file_status classe |
Encapsula um file_type. |
Estruturas
| Nome | Descrição |
|---|---|
Estrutura space_info |
Mantém informações sobre um volume. |
Functions
Operadores
Enumerações
| Nome | Descrição |
|---|---|
copy_options |
Uma enumeração que é usada com copy_file e determina o comportamento se um arquivo de destino já existir. |
directory_options |
Uma enumeração que especifica opções para iteradores de diretório. |
file_type |
Uma enumeração de tipos de arquivo. |
perm_options |
Enumera opções para a função permissions. |
perms |
Um tipo de bitmask usado para transmitir permissões e opções de permissões |