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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top