मुझे विंडोज एक्सप्लोरर जैसी फ़ाइलों के लिए कंप्यूटर खोजने का एक तरीका चाहिए। मैं चाहता हूं कि मेरा प्रोग्राम खोज करे, हार्ड ड्राइव सी कहें:। मुझे फ़ोल्डरों और फ़ाइलों के लिए सी: \ खोजने के लिए इसकी आवश्यकता है (केवल वे जिन्हें आप सी में देख सकते हैं: \ यदि उपयोगकर्ता फ़ोल्डर परीक्षण (सी: \ टेस्ट) जैसे सूची में फ़ाइल पर क्लिक करता है तो यह परीक्षण खोजेगा और चलो उपयोगकर्ता क्या फ़ाइलें/फ़ोल्डर उस में कर रहे हैंफ़ाइलों और फ़ोल्डर्स के लिए कंप्यूटर को कैसे खोजें
उत्तर
आप विंडोज उल्लेख के बाद से, सबसे सीधे आगे WinAPI जिस तरह से यह FindFirstFile और FindNextFile कार्यों के साथ है क्या करना है।
संपादित करें: यहाँ एक उदाहरण आप एक निर्देशिका में सभी फ़ाइलें/फ़ोल्डर की गणना करने के लिए कैसे पता चलता है कि है।
#include <Windows.h>
#include <iostream>
int main()
{
WIN32_FIND_DATA file;
HANDLE search_handle=FindFirstFile(L"C:\\*",&file);
if (search_handle)
{
do
{
std::wcout << file.cFileName << std::endl;
}while(FindNextFile(search_handle,&file));
FindClose(search_handle);
}
}
आप के साथ सी # या प्रबंधित सी ++ यह करने के लिए Directory
वर्ग के सदस्यों उपयोग कर सकते हैं निम्नलिखित MSDN लेख:।।
http://support.microsoft.com/kb/307009
आप उपयोग करना चाहते हैं एमएफसी के साथ सी ++ आप CFileFind
http://msdn.microsoft.com/en-us/library/f33e1618%28v=VS.80%29.aspx
का उपयोग कर सकते हैंआपको फ़ाइल सिस्टम पेड़ प्रस्तुत करने के लिए अपनी खुद की ब्राउज़ विंडो की आपूर्ति करनी होगी।
या आप दोनों के लिए काम करने के लिए निर्देशिका/फ़ाइल नियंत्रणों में से एक का उपयोग कर सकते हैं।
वह .NET का उपयोग करता है और सी ++/सीएलआई का उपयोग करने की आवश्यकता है। –
@ जॉर्ज: स्पष्टीकरण के लिए धन्यवाद। यदि वह .NET के बिना C++ का उपयोग करना चाहता है तो मैंने अतिरिक्त जानकारी जोड़ दी है। –
: | मुझे जानकारी नहीं मिली – blood
यह ओएस निर्भर होगा। तो सवाल यह है
How can I get a list of files in a directory using C or C++?
अच्छी तरह से इस समस्या को संभालती है। आप यहां DIRENT डाउनलोड कर सकते हैं।
अब आपके पास यह है, मैं DFS/BFS एल्गोरिदम के साथ एक फ़ाइल की खोज करने की अनुशंसा करता हूं। आप मान सकते हैं कि संपूर्ण निर्देशिका संरचना tree है जहां प्रत्येक फ़ाइल एक पत्ता नोड है और प्रत्येक उपनिर्देशिका एक आंतरिक नोड है।
तो तुम सब करने की है, है
- जैसे एक समारोह के साथ एक निर्देशिका में फ़ाइलें/फ़ोल्डर की सूची प्राप्त करें:
void getFilesFolders(vector<string> & dir_list, const string & folder_name)
- यदि यह एक निर्देशिका है, के साथ 1 के लिए जाना निर्देशिका का नाम
- यदि यह एक फ़ाइल है, तो यह समाप्त करें कि यह फ़ाइल है जिसे आप ढूंढ रहे हैं, अन्यथा अगली फ़ाइल पर जाएं।
सी या सी ++ का उपयोग कर निर्देशिका में फ़ाइलों की सूची कैसे प्राप्त कर सकता हूं? अच्छा है लेकिन कोड मैं काम नहीं कर सकता। केवल ब्रायन आर बॉन्डी का कोड उसका आखिरी हिस्सा है, लेकिन यह केवल फाइलों को ढूंढता है जो मैं चाहता था और मुझे यह भी नहीं पता कि यह कैसे काम करता है, इसलिए मैं इसे अपने प्रोग्राम के लिए संपादित नहीं कर सकता :( – blood
सख्त से खेलना देखें कि यह काम करता है कि – blood
पर मैं आपको सख्त नहीं कर सकता हूं, लेकिन मैं इसे 9 .9 फाइल के रूप में अनजिप करता हूं और सब कुछ। क्या मुझे कुछ याद आया क्योंकि मैंने इसे अभी आपके लिंक से डाउनलोड किया है – blood
बढ़ावा :: फाइल सिस्टम उस के लिए एक क्रॉस-प्लेटफ़ॉर्म समाधान हो सकता है (इसमें ऐसे कार्यों के लिए जांचें)।
मैं वास्तव में तीसरे पक्ष के सॉफ्टवेयर नहीं चाहता था – blood
वास्तव में तीसरे पक्ष के सॉफ्टवेयर इतने ज्यादा नहीं, बूस्ट को सी ++ प्रोग्रामर द्वारा मानक माना जाता है, लेकिन तब आप ऐसा नहीं मानते हैं जो मानक पुस्तकालयों का उपयोग करना पसंद करता है (iostream के अलावा, C++ में से एक कम महान विशेषताएं)। – CashCow
#include <Windows.h>
#include <iostream>
int FindF(char* pDirectory)
{
char szFindPath[MAX_PATH] = {0};
strcpy(szFindPath, pDirectory);
strcat(szFindPath, "\\*");
WIN32_FIND_DATA file;
HANDLE search_handle=FindFirstFile(szFindPath,&file);
if (search_handle)
{
do
{
if(file.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
strcpy(szFindPath, pDirectory);
strcat(szFindPath, "\\");
strcat(szFindPath, file.cFileName);
FindF(szFindPath);
}
std::wcout << file.cFileName << std::endl;
}while(FindNextFile(search_handle,&file));
CloseHandle(search_handle);
}
}
यह लगभग एक अच्छा समाधान है: 1. यह ज्यादातर सी में है, फिर भी आप आईस्ट्रीम में डालते हैं ताकि आप सी में आईस्ट्रीम के साथ लिख रहे हों ... यदि आप सी ++ में लिखना चाहते हैं तो मैं कम से कम std :: स्ट्रिंग का उपयोग करूंगा। आपका असली गंभीर गलती है कि आप "डॉट्स" की जांच नहीं करते हैं, इसलिए आपका हमेशा के लिए भर्ती करेगा (या अधिक संभावना है कि इस साइट के नाम से पीड़ित)। – CashCow
FindFirstFile() के साथ खोले गए हैंडल को बंद करने के लिए FindClose() का उपयोग करें। CloseHandle() डीबग मोड में "अमान्य हैंडल" फेंक देगा। – NoAngel
इसे पूरा करने के लिए वास्तव में तृतीय पक्ष लाइब्रेरी का उपयोग करने की आवश्यकता नहीं है। यह एक छोटा, स्वतंत्र फ़ंक्शन है जो उप-निर्देशिकाओं की फ़ाइलों सहित निर्देशिका में सभी फ़ाइलों (उनके पथों के साथ) सूचीबद्ध करता है। std::string folderName
को \
के साथ समाप्त करना होगा, और यदि आप कंप्यूटर पर सभी फाइलों को सूचीबद्ध करना चाहते हैं, तो बस GetLogicalDriveStrings के साथ फ़ंक्शन कॉलिंग में लूप बनाएं (यह \
के साथ स्ट्रिंग देता है, इसलिए यह इस मामले में अधिक सुविधाजनक नहीं हो सकता है)।
void FindAllFiles(std::string folderName)
{
WIN32_FIND_DATA FileData;
std::string folderNameWithSt = folderName + "*";
HANDLE FirstFile = FindFirstFile(folderNameWithSt.c_str(), &FileData);
if (FirstFile != INVALID_HANDLE_VALUE) {
do {
if (strcmp(FileData.cFileName, ".") != 0 && strcmp(FileData.cFileName, "..") != 0)
{
if(FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
std::string NewPath = folderName + FileData.cFileName;
NewPath = NewPath + "\\";
FindAllFiles(NewPath);
}
else
{
std::cout /*<< folderName*/ << FileData.cFileName << std::endl;
}
}
} while(FindNextFile(FirstFile, &FileData));
}
}
यह ASCII संस्करण, याद है कि फ़ाइलों और फ़ोल्डरों यूनिकोड
मैं बस सोच रहा हूं, क्या आप समझा सकते हैं कि FindFile की तुलना में लाभ क्या हैं, कृपया? (और बीटीडब्ल्यू, एएससीआईआई एएसएसआई नहीं होना चाहिए?) –
- 1. फ़ोल्डर्स और फ़ाइलों को संपीड़ित/डिकंप्रेस करना
- 2. फ़ाइलों के बिना फ़ोल्डर्स, फ़ोल्डर्स के बिना फाइलें, या पावरशेल
- 3. फ़ोल्डर में सभी फ़ाइलों को खोजें
- 4. एकाधिक फ़ाइलों में स्ट्रिंग को कैसे खोजें और पावरहेल में फ़ाइलों के नाम वापस कैसे करें?
- 5. बैच स्क्रिप्ट में फ़ाइलों के लिए खोजें और उन फ़ाइलों को संसाधित करें?
- 6. WinRT: पुस्तकालयों और ज्ञात फ़ोल्डर्स के बाहर फ़ाइलों को गिनाने के लिए ऐप
- 7. एसवीएन प्रोजेक्ट में फ़ाइलों या फ़ोल्डर्स को अनदेखा कैसे करें
- 8. लॉक की गई फ़ाइलें और फ़ोल्डर्स हटाना
- 9. सभी संभावित फ़ोल्डर्स के भीतर एक फाइल खोजें?
- 10. समाधान के लिए मौजूदा उप-फ़ोल्डर (बाल फ़ाइलों/फ़ोल्डर्स के साथ/बिना) को कैसे जोड़ा जाए?
- 11. ClearCase cleartool के साथ सभी चेकआउट फ़ाइलों को कैसे खोजें?
- 12. एकाधिक फ़ाइलों में खोजें और प्रतिस्थापित करें
- 13. फ़ोल्डर्स जोड़ें और एसवीएनकिट
- 14. GTK + Filechooser दोनों फाइलों और फ़ोल्डर्स को खोलने के लिए
- 15. मेरे कंप्यूटर पर php फ़ाइलों को कैसे चलाएं
- 16. माउस को देखने के लिए कैसे खोजें
- 17. स्थानीय लिनक्स कंप्यूटर से फ़ाइलों को प्रतिलिपि बनाने के लिए अमेज़ॅन के लिए लिनक्स उदाहरण
- 18. सर्वर पर सभी htaccess फ़ाइलों को खोजें
- 19. गिट और खाली फ़ोल्डर्स
- 20. मैं फ़ाइलों में खोजें से फ़ोल्डर को बाहर करने के लिए विजुअल स्टूडियो को कैसे बताऊं?
- 21. आईफोन एसडीके में सभी फ़ोल्डर्स और उनकी उपनिर्देशिका/फ़ाइलों को कैसे सूचीबद्ध करें?
- 22. एक्सकोड बिल्डिंग और संसाधन फ़ोल्डर्स
- 23. फ़ोल्डर्स
- 24. फ़ाइलों को लिखने के लिए getResourceStream
- 25. रूट निर्देशिका में फ़ाइलों और फ़ोल्डर्स की सूची के लिए क्वेरी
- 26. उच्च रिज़ॉल्यूशन हैंडहेल्ड के लिए ड्रायबल फ़ोल्डर्स
- 27. imap "सभी खोजें" स्कोप: सभी फ़ोल्डर्स/वर्तमान फ़ोल्डर?
- 28. शैल: निर्देशिका के अंतर्गत किसी सूची में फ़ाइलों को खोजें
- 29. बिटमैपफैक्टरी.decodeResource और drawable * फ़ोल्डर्स
- 30. किसी वेबसाइट के लिए संबंधित लॉग फ़ाइल फ़ोल्डर कैसे खोजें?
में नामित किया जा सकता है और अपने प्रश्न है ... क्या? –
यह एक मंच-विशिष्ट समस्या है। क्या आप विंडोज़, यूनिक्स इत्यादि पर हैं? – TreDubZedd
यदि वह अपनी हार्ड ड्राइव को 'सी:' और निर्देशिकाओं के रूप में संदर्भित करता है तो यह स्पष्ट रूप से स्पष्ट है कि उसका प्लेटफ़ॉर्म क्या हो सकता है ... ;-) ओह, और बैकस्लैश पथ विभाजक प्रकार इसे दूर भी देता है। –