limitazione MAX_PATH in Boost.Filesystem
Domanda
voglio usare biblioteca Boost.Filesystem per manipolare percorsi, file e directory. Mio è questione sono percorsi più lunghi di MAX_PATH supportato?
So che in Win32API abbiamo soluzione alternativa "\\? \", Ma non è supportato da funzioni di base come PathAppend e PathCombine.
Così sto cercando qualsiasi informazioni utili su MAX_PATH e Boost.FS.
Grazie
UPD: mi preoccupo per tutte le operazioni come percorso di aggiunta, il percorso si combinano, ecc (ho quelle funzioni in Win32API, ma non funziona con percorsi di lunghezza superiore a MAX_PATH) Per esempio CreateFileW e DeleteFileW entrambi i percorsi di supporto superiori a MAX_PATH. Può Boost.FS essere un sostituto per funzioni di utilità Win32API, come quelli trovati in shlwapi e shell32 che spesso non supporta i percorsi lunghi
Soluzione
La verità è che Windows supporta i percorsi di qualsiasi lunghezza, e qualsiasi percorso può essere convertito in stringa su finestre. \\?\
aggiunta è necessaria in questo caso, ma questa è la parte di "fare una stringa su un dato percorso" operazione.
Per quanto ne so, Boost :: FileSystem fa questo torto sulle finestre.
Non so se una correzione è prevista. Vedere questo su come dovrebbe essere fatto.
Altri suggerimenti
È possibile manipolare qualsiasi lunghezza del file system stringa di percorso, con o senza Boost.Filesystem.
MAX_PATH è restrizioni di API file di Windows. Cioè, non è possibile passare stringa di percorso troppo lungo per le API di Windows.
Per esempio, la funzione di rimozione del Boost.Filesystem verrà effettuata con più di lunghezza percorso MAX_PATH. Si vuole Boost.Filesystem fare qualcosa di simile directory corrente il cambiamento e usare il percorso relativo alla restrizione prevenire MAX_PATH? Io non la penso così la sua possibile.
A CURA
A causa Boost.Filesystem implementato sulla stringa di C ++, non è necessario preoccuparsi di lunghezza del percorso. Boost.Filesystem fornire non solo i percorsi metodi di manipolazione delle stringhe, ma anche metodi di manipolazione del sistema di file. Si dovrebbe evitare i metodi di file system se il percorso risultante è troppo lungo.
Non so se il supporto Boost.Filesystem percorso Win32 Unicode, ma si potrebbe convertire percorso ANSI finale al percorso Unicode prima di chiamare le API Win32 di file.