2010-09-05 14 views
7

मेरे पास एक छोटी लेकिन खुजली समस्या है। क्यूटी में विंडोज पथ के लिए मुझे सही केस कैसे मिल सकता है?मुझे पथ का सही मामला कैसे मिल सकता है?

मान लें कि मेरे पास c:\documents and settings\wolfgang\documentsQString str में संग्रहीत पथ है और मैं सही केस जानना चाहता हूं, यहां C:\Document and Settings\Wolfgang\DocumentsQDir(str).absolutePath() मुझे सही मामले के साथ पथ नहीं मिलता है।

कोई सुझाव, क्योंकि मेरे पास कोई सुराग नहीं है और मैं कोशिश कर सकता हूं?

आपके समय के लिए धन्यवाद!

उत्तर

4

ऐसा करने का कोई आसान तरीका नहीं है, लेकिन आप QDir.entryList करने का प्रयास कर सकते हैं, और फिर परिणामों पर एक केस असंवेदनशील खोज कर सकते हैं। यह आपको सही फ़ाइल नाम प्रदान करेगा। इसके बाद आपको उस परिणाम के लिए absolutePath प्राप्त करने की आवश्यकता होगी।

यह आपको पथ/फ़ाइल नाम के लिए संरक्षित मामला देना चाहिए।

+0

अपडेट किया गया, थोड़ा जटिल हैं, लेकिन करने के लिए कोई अच्छा आसान तरीका है दुर्भाग्य से यह करो। - मैं सोचने में मदद नहीं कर सकता कि आपको मामले-संरक्षित पथ/फ़ाइल नाम को केस-असंवेदनशील फाइल सिस्टम पर क्यों चाहिए? – ocodo

+0

यह सिर्फ उपयोगकर्ता के लिए पथ पेश करने के लिए है। उनका उपयोग उनके पथ के मामलों को ठीक करने के लिए किया जाता है। – WolfgangA

+0

पथ को सभी निचले-मामले को पहली जगह कैसे समाप्त किया गया? मैं इसे ठीक कर दूंगा। –

0

आप उस के लिए QFileInfo और समारोह

QString QFileInfo::absoluteFilePath() const का उपयोग पूर्ण फ़ाइल पथ वापस आ जाएगी कर सकते हैं।

उदा:

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

एक और लाभ यह है कि, yourPath हो सकता है एक QFile या QString ताकि आप इसे संभाल वर्तमान में आप कर रहे हैं के साथ सीधे उपयोग कर सकते हैं। इन के अलावा, वहाँ अन्य कार्यों को भी करने के लिए है कि फाइल के बारे में उपयोगी जानकारी प्राप्त कर सकते QFileInfo के माध्यम से उपलब्ध के लिए भेजा जा रहा है ..

आशा है कि यह मदद करता है ..

+0

क्षमा करें, यह विंडोज पर काम नहीं करता है। QFileInfo ("c:/windows")। AbsoluteFilePath() 'सी:/विंडोज़' के बजाय 'सी:/विंडोज' देता है। – WolfgangA

संबंधित मुद्दे