2010-09-05 15 views
7

Ho un piccolo problema ma prurito. Come ottengo il caso corretto per un percorso di Windows in Qt?Come si ottiene il caso corretto di un percorso?

Diciamo che ho un percorso c:\documents and settings\wolfgang\documents memorizzato in un QString str e voglio sapere il caso corretto, qui C:\Document and Settings\Wolfgang\Documents. QDir(str).absolutePath() non mi ottiene il percorso con il caso corretto.

Qualche suggerimento, visto che non ho idea di cos'altro potrei provare?

Grazie per il vostro tempo!

risposta

4

Non esiste un modo semplice per eseguire questa operazione, ma è possibile provare a eseguire una ricerca QDir.entryList, quindi eseguire una ricerca non sensibile al maiuscolo/minuscolo sui risultati. Questo ti fornirà il nome file corretto. Avrai quindi bisogno di ottenere il absolutePath per quel risultato.

Questo dovrebbe fornire il caso conservato per il percorso/nome file.

+0

aggiornato, un po 'contorto, ma non c'è modo semplice bello fallo sfortunatamente - Non posso fare a meno di chiedermi perché hai bisogno di un percorso/nome file protetto da un caso su un filesystem insensibile alle maiuscole e minuscole? – ocodo

+0

È solo per presentare il percorso all'utente. Sono usati per correggere i casi dei loro percorsi. – WolfgangA

+0

In che modo il percorso ha terminato tutte le lettere minuscole in primo luogo? Preferirei ripararlo. –

0

È possibile utilizzare QFileInfo per questo e la funzione

QString QFileInfo::absoluteFilePath() const restituirà il percorso del file assoluto.

es:

QFileInfo yourFileInfo(yourPath); 
QString correctedCasePath = yourFileInfo.absoluteFilePath(); 

Un altro vantaggio è che, yourPath può essere un QFile o QString in modo che si può utilizzare direttamente con il manico attualmente si stanno avendo. Oltre a questi, ci sono altre operazioni sono disponibili attraverso QFileInfo che possono ottenere informazioni utili sul file che viene denominato anche ..

Speranza che aiuta ..

+0

Spiacente, non funziona su Windows. QFileInfo ("c:/windows"). AbsoluteFilePath() restituisce "C:/windows" anziché "C:/WINDOWS". – WolfgangA

Problemi correlati