Directory.GetFiles
को वापस आने से पहले सभी मिलान करने वाली फ़ाइलों की एक सूची बनाना है। केवल तभी आप उन्हें गिन सकते हैं। तो निश्चित रूप से, यह बहुत महंगा है जब बहुत सारी मेल खाने वाली फाइलें हैं। यह आंतरिक रूप से सभी फाइलों की एक सूची भी बना सकता है।
यदि आप .NET 4.0 का उपयोग कर सकते हैं, तो आप Directory.EnumerateFiles
का उपयोग कर सकते हैं जो एक समय में एक फ़ाइल को पुनर्प्राप्त करके इस समस्या से बचाता है। यदि आप नहीं कर सकते हैं, तो मैं सुझाव दूंगा कि आप इसे C#+ में सी # के बजाय लिखें।
सी ++ में आप FindFirstFile
का उपयोग कर सकते हैं जो एक समय में फ़ाइलों को आपके पास भी लौटाता है।
// iterate though the files in this directory
//
TCHAR szWild[MAX_PATH];
PathCombine(szWild, masterfolders, _T("*.txt"));
WIN32_FIND_DATA fd;
HANDLE hFind = FindFirstFile(szWild, &fd);
if (INVALID_HANDLE_VALUE != hFind)
{
do {
TCHAR szFileName[MAX_PATH];
PathCombine(szFileName, masterfolders, fd.cFileName);
// write szFilename to output stream..
} while (FindNextFile(hFind, &fd));
FindClose (hFind);
}
स्रोत
2009-12-28 18:35:32
800K? क्या आपका मतलब 800 एमबी था? –
मेमोरी उपयोग की 1 एमबी क्यों समस्या है?एक लाख से अधिक फाइलें? –
800 मेग्स जो मैं –