2010-09-05 6 views
7

J'ai un petit problème de démangeaisons. Comment obtenir le bon cas pour un chemin d'accès Windows dans Qt? Disons que j'ai un chemin c:\documents and settings\wolfgang\documents stocké dans un QString str et je veux savoir le bon cas, ici C:\Document and Settings\Wolfgang\Documents. QDir(str).absolutePath() ne me donne pas le chemin avec le cas correct.Comment obtenir le bon cas d'un chemin?

Des suggestions, puisque je n'ai aucune idée quoi d'autre je pourrais essayer?

Nous vous remercions de votre temps!

Répondre

4

Il n'existe pas de méthode simple pour ce faire, mais vous pouvez essayer de créer une QDir.entryList, puis effectuer une recherche insensible à la casse sur les résultats. Cela vous fournira le nom de fichier correct. Vous devrez alors obtenir le absolutePath pour ce résultat.

Cela devrait vous donner le cas préservé pour le chemin/nom de fichier.

+0

Mise à jour, un peu alambiquée, mais il n'y a aucun moyen simple et agréable à fais ceci malheureusement. - Je ne peux pas m'empêcher de me demander pourquoi vous avez besoin d'un chemin/nom de fichier conservé sur un système de fichiers insensible à la casse? – ocodo

+0

C'est juste pour présenter le chemin à l'utilisateur. Ils sont utilisés pour corriger les cas de leurs chemins. – WolfgangA

+0

Comment le chemin a-t-il fini en minuscules en premier lieu? Je préférerais régler ça. –

0

Vous pouvez utiliser QFileInfo pour cela et la fonction

QString QFileInfo::absoluteFilePath() const retourne le chemin absolu du fichier.

par exemple:

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

Un autre avantage est que, yourPath peut être un QFile ou QString afin que vous puissiez l'utiliser directement avec la poignée actuellement que vous rencontrez. Outre cela, il y a d'autres opérations sont également disponibles par le biais QFileInfo qui peuvent obtenir des informations utiles sur le fichier étant appelé ..

Hope it helps ..

+0

Désolé, cela ne fonctionne pas sous Windows. QFileInfo ("c:/windows"). AbsoluteFilePath() donne "C:/windows" au lieu de "C:/WINDOWS". – WolfgangA

Questions connexes