Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per il codice corrente, includere l'intestazione <filesystem> standard C++17 e usare lo std::filesystem spazio dei nomi per classi e funzioni che modificano e recuperano informazioni su percorsi, file e directory. Compilare con /std:c++17 o versione successiva.
Sintassi
#include <filesystem> // C++17 standard header file name
using namespace std::filesystem;
Annotazioni
Nota cronologica: prima di C++17 standardizzato <filesystem>, MSVC ha fornito un'implementazione prendard separata nell'intestazione <experimental/filesystem> , che è stata rimossa a partire da MSVC Build Tools versione 14.51. Per la documentazione, vedere <experimental/filesystem>.
L'intestazione <filesystem> supporta i file system per Microsoft Windows e POSIX.
Mentre la maggior parte delle funzionalità sono comuni a entrambi i sistemi operativi, questo documento ne identifica le differenze. Ad esempio:
- Windows supporta più nomi radice, ad esempio
c:o\\network_name. Un file system è costituito da una foresta di alberi, ognuna con la propria directory radice, ad esempioc:\o\\network_name\, e ognuna con la propria directory corrente, per completare un percorso relativo (uno che non è un percorso assoluto). - POSIX supporta un singolo albero, senza nome radice, la singola directory
/radice e una singola directory corrente.
Un'altra differenza significativa è la rappresentazione nativa dei nomi di percorso:
Windows usa una sequenza con terminazione Null di
wchar_t, codificata come UTF-16 (uno o più elementi per ogni carattere).POSIX usa una sequenza con terminazione Null di
char, codificata come UTF-8 (uno o più elementi per ogni carattere).Un oggetto della classe
patharchivia il percorso in formato nativo, ma supporta una semplice conversione tra questo modulo archiviato e diversi moduli esterni:- Sequenza con terminazione Null di
char, codificata come preferita dal sistema operativo. - Sequenza con terminazione Null di
char, codificata come UTF-8. - Sequenza con terminazione Null di
wchar_t, codificata come preferita dal sistema operativo. - Sequenza con terminazione Null di
char16_t, codificata come UTF-16. - Sequenza con terminazione Null di
char32_t, codificata come UTF-32.
Le conversioni reciproche tra queste rappresentazioni vengono mediate, come necessario, dall'uso di uno o più facet
codecvt. Se non viene specificato alcun oggetto delle impostazioni locali specifico, questi facet vengono ottenuti dalle impostazioni locali globali.- Sequenza con terminazione Null di
Un'altra differenza sta nel dettaglio con cui ogni sistema operativo consente di specificare le autorizzazioni di accesso a file o directory:
- Windows registra se un file è di sola lettura o scrivibile, un attributo che non ha alcun significato per le directory.
- POSIX registra se un file può essere letto, scritto o eseguito (analizzato, se una directory). E, indipendentemente dal fatto che ogni operazione sia consentita per il proprietario, il gruppo del proprietario o per tutti, più alcune altre autorizzazioni.
Comuni a entrambi i sistemi è la struttura imposta a un percorso dopo aver ignorato il nome radice. Per pathname c:/abc/xyz/def.ext:
- Il nome radice è
c:. - La directory radice è
/. - Il percorso radice è
c:/. - Il percorso relativo è
abc/xyz/def.ext. - Il percorso padre è
c:/abc/xyz. - Il nome file è
def.ext. - Il gambo è
def. - L'estensione è
.ext.
Una differenza minore è il separatore preferito tra la sequenza di directory in un pathname. Entrambi i sistemi operativi consentono di scrivere una barra /, ma in alcuni contesti Windows preferisce una barra rovesciata \. L'implementazione archivia il separatore preferito nel membro preferred_separator dati in path.
Infine, gli path oggetti hanno una funzionalità importante: è possibile usarli ovunque sia necessario un argomento nome file nelle classi definite nell'intestazione <fstream>.
Per altre informazioni ed esempi di codice, vedere Navigazione nel file system (C++).
Classi
| Nome | Descrizione |
|---|---|
Classe directory_entry |
Descrive un oggetto restituito da un directory_iterator oggetto o recursive_directory_iterator e contiene un oggetto path. |
Classe directory_iterator |
Descrive un iteratore di input sequenziato attraverso i nomi file in una directory del file system. |
Classe filesystem_error |
Classe di base per le eccezioni generate per segnalare un errore di sistema di basso livello. |
Classe path |
Definisce una classe che archivia un oggetto di tipo modello String che può essere usato come nome file. |
Classe recursive_directory_iterator |
Descrive un iteratore di input sequenziato attraverso i nomi file in una directory del file system. L'iteratore può anche accedere alle sottodirectory. |
Classe file_status |
Esegue il wrapping di un file_type. |
Struct
| Nome | Descrizione |
|---|---|
space_info struttura |
Contiene informazioni su un volume. |
Funzioni
Operatori
Enumerazioni
| Nome | Descrizione |
|---|---|
copy_options |
Enumerazione usata con copy_file che determina il comportamento nel caso in cui un file di destinazione esista già. |
directory_options |
Enumerazione che specifica le opzioni per gli iteratori di directory. |
file_type |
Enumerazione di tipi di file. |
perm_options |
Enumera le opzioni per la permissions funzione. |
perms |
Un tipo di maschera di bit usato per trasferire le autorizzazioni e le opzioni per le autorizzazioni |