Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Para 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, ficheiros e diretórios. Compilar com /std:c++17 ou mais tarde.
Sintaxe
#include <filesystem> // C++17 standard header file name
using namespace std::filesystem;
Note
Nota histórica: Antes da padronização <filesystem>do C++17, o MSVC incluía uma implementação pré-padrão separada no <experimental/filesystem> cabeçalho, que foi removida a partir da versão 14.51 do MSVC Build Tools. Para a sua documentação, veja <experimental/filesystem>.
O <filesystem> cabeçalho suporta sistemas de ficheiros para Microsoft Windows e POSIX.
Embora a maioria das funcionalidades seja comum a ambos os sistemas operativos, este documento identifica onde ocorrem diferenças. Por exemplo:
- O Windows suporta múltiplos nomes raiz, como
c:ou\\network_name. Um sistema de ficheiros consiste numa floresta de árvores, cada uma com o seu próprio diretório raiz, comoc:\ou\\network_name\, e cada uma com o seu próprio diretório atual, para completar um nome de caminho relativo (um que não é um nome de caminho absoluto). - O POSIX suporta uma única árvore, sem nome raiz, o diretório
/raiz único e um único diretório atual.
Outra diferença significativa é a representação nativa dos nomes de caminho:
O Windows utiliza uma sequência terminada nula de
wchar_t, codificada como UTF-16 (um ou mais elementos para cada carácter).O POSIX utiliza uma sequência terminada por nulo de
char, codificada como UTF-8 (um ou mais elementos para cada carácter).Um objeto da classe
patharmazena o nome do caminho em forma nativa, mas suporta uma conversão fácil entre esta forma armazenada e várias formas externas:- Uma sequência terminada por nulo de
char, codificada conforme preferido pelo sistema operativo. - Uma sequência terminada por nulo de
char, codificada como UTF-8. - Uma sequência terminada por nulo de
wchar_t, codificada conforme preferido pelo sistema operativo. - Uma sequência terminada por nulo de
char16_t, codificada como UTF-16. - Uma sequência terminada nula de
char32_t, codificada como UTF-32.
As interconversões entre estas representações são mediadas, conforme necessário, pelo uso de uma ou mais
codecvtfacetas. Se não for especificado nenhum objeto local específico, estas facetas são obtidas a partir do local global.- Uma sequência terminada por nulo de
Outra diferença é o detalhe com que cada sistema operativo permite especificar permissões de acesso a ficheiros ou diretórios:
- O Windows regista se um ficheiro é só de leitura ou gravável, um atributo que não tem significado para diretórios.
- O POSIX regista se um ficheiro pode ser lido, escrito ou executado (varrido, se for um diretório). E, se cada operação é permitida para o proprietário, para o grupo do proprietário ou para todos, além de algumas outras permissões.
Comum a ambos os sistemas é a estrutura imposta a um nome de caminho depois de ultrapassar o nome raiz. Para o nome c:/abc/xyz/def.extdo caminho:
- O nome raiz é
c:. - O diretório raiz é
/. - O caminho da raiz é
c:/. - O caminho relativo é
abc/xyz/def.ext. - O caminho principal é
c:/abc/xyz. - O nome do arquivo é
def.ext. - O caule é
def. - A extensão é
.ext.
Uma diferença menor é o separador preferido entre a sequência de diretórios num nome de caminho. Ambos os sistemas operativos permitem escrever uma barra /diagonal para a frente, mas em alguns contextos o Windows prefere uma barra \inversa. A implementação armazena o seu separador preferido no elemento preferred_separator de dados em path.
Finalmente, path os objetos têm uma funcionalidade importante: pode usá-los sempre que um argumento de nome de ficheiro seja necessário nas classes definidas no cabeçalho <fstream>.
Para mais informações e exemplos de código, veja Navegação por sistema de ficheiros (C++).
Aulas
| Name | Descrição |
|---|---|
directory_entry Classe |
Descreve um objeto que é devolvido por a directory_iterator ou a recursive_directory_iterator e contém um path. |
directory_iterator Classe |
Descreve um iterador de entrada que sequencia os nomes dos ficheiros num diretório do sistema de ficheiros. |
filesystem_error Classe |
Uma classe base para exceções que são lançadas para reportar um erro de sistema de baixo nível. |
path Classe |
Define uma classe que armazena um objeto do tipo String template adequado para uso como nome de ficheiro. |
recursive_directory_iterator Classe |
Descreve um iterador de entrada que sequencia os nomes dos ficheiros num diretório do sistema de ficheiros. O iterador também pode descer para subdiretórios. |
file_status Classe |
Envolve um file_type. |
Estruturas
| Name | Descrição |
|---|---|
space_info Estrutura |
Contém informação sobre um volume. |
Funções
Operators
Enumerations
| Name | Descrição |
|---|---|
copy_options |
Uma enumeração que é usada com copy_file e determina o comportamento se já existir um ficheiro de destino. |
directory_options |
Uma enumeração que especifica opções para iteradores de diretórios. |
file_type |
Uma enumeração para tipos de ficheiros. |
perm_options |
Enumera opções para a permissions função. |
perms |
Um tipo de máscara de bits usado para transmitir permissões e opções para permissões |