जब मैं कुछ फ़ोल्डरों और फ़ाइलों के माध्यम से पुनरावृत्ति करता हूं, तो मुझे यह त्रुटि आती है:सी # DirectoryInfo का उपयोग करते समय मैं सीमाओं को कैसे हल कर सकता हूं?
निर्दिष्ट पथ, फ़ाइल नाम, या दोनों बहुत लंबे हैं। पूरी तरह से योग्य फ़ाइल नाम 260 वर्णों से कम होना चाहिए, और निर्देशिका नाम 248 वर्णों से कम होना चाहिए।
यहाँ
private void ProcessDirectory(DirectoryInfo di)
{
try
{
DirectoryInfo[] diArr = di.GetDirectories();
foreach (DirectoryInfo directoryInfo in diArr)
{
if (StopCheck)
return;
ProcessDirectory(directoryInfo);
}
ProcessFile(di);
}
catch (Exception e)
{
listBoxError.Items.Add(e.Message);
}
TextBoxCurrentFolder.Text = di.ToString();
}
मुझे लगता है मैं इस समस्या को कैसे हल कर सकते हैं निर्देशिका नाम छोटा है, क्योंकि मैं भी तो अनुमति नहीं कर रहा हूँ नहीं कर सकता ... मेरी समारोह है?
जोड़ा गया:
private void ProcessFile(DirectoryInfo di)
{
try
{
FileInfo[] fileInfo = di.GetFiles();
if (fileInfo.LongLength != 0)
{
foreach (FileInfo info in fileInfo)
{
Size += info.Length;
CountFile++;
}
}
}
catch (Exception e)
{
listBoxError.Items.Add(e.Message);
}
}
संपादित इस मिला जहां उन्होंने जीटा लांग पथ प्रयोग किया है:: यहाँ अन्य समारोह है How can I use FileInfo class, avoiding PathTooLongException?
इसे लागू किया है और अब मैं जा रहा हूँ कार्यक्रम को रात को चलाने के लिए यह देखने के लिए कि यह काम करता है या नहीं।
EDIT कल जेतालोंगपाथ का इस्तेमाल किया और यह बहुत अच्छा काम किया! यह फ़ोल्डर्स के माध्यम से भी चला गया जिसके लिए अनुमति पहुंच की आवश्यकता थी।
संपादित zetalongPath के बजाय , मैं Delimon.Win32.IO.dll जो मुझे लगता है कि बेहतर है का उपयोग किया है। Win32 के रूप में यह वही इंटरफेस है।
मैं आप सादे Windows API के लिए वापस जाने के लिए है लगता है (FindFirst */FindNext *) –
तो त्रुटि 'ProcessFile के भीतर से होती है()', हो सकता है कि कोड कर सकते हैं अगर हम इसे देख सकते हैं तो बदला जा सकता है? – musefan
क्या आप जानते हैं कि फाइलों को संसाधित करने से पहले आप सबसे गहरे सबफ़ोल्डर के लिए सबसे पहले हैं ?! यदि आप रूटफॉल्डर से प्रारंभ करना चाहते हैं तो आपको विधि की शुरुआत में 'ProcessFile (di);' ले जाना चाहिए। –