2014-04-15 5 views
9

मैं अन्य सी # कोड है कि में फ़ोल्डर c एक कॉल रिकॉर्डिंग फ़ाइल चला जाता है: \ रिकॉर्डिंगजांच करें कि फ़ोल्डर कुछ एक्सटेंशन वाली फ़ाइलें हैं

प्रत्येक फ़ाइल .wma

मैं करना चाहते हैं एक्सटेंशन है हर 5 मिनट में फ़ोल्डर की जांच करने में सक्षम हो। अगर फ़ोल्डर में .wma में समाप्त होने वाली फ़ाइल है, तो मैं कुछ कोड निष्पादित करना चाहता हूं।

यदि फ़ोल्डर में .wma एक्सटेंशन के साथ कोई फ़ाइल नहीं है, तो मैं कोड को 5 मिनट के लिए रोकना चाहता हूं और फिर पुन: जांच (असीमित)।

मैंने निम्नलिखित जांच के साथ शुरुआत की है कि फ़ोल्डर में इसमें कोई फाइल है या नहीं, लेकिन जब मैं इसे चलाता हूं, तो यह हमेशा रिपोर्ट करता है कि फ़ोल्डर में फाइलें हैं, भले ही यह नहीं है।

string dirPath = @"c:\recordings\"; 
     if (Directory.GetFiles(dirPath).Length == 0) 
     { 
      NewRecordingExists = true; 
      Console.WriteLine("New Recording exists"); 
     } 
     else 
     { 
      NewRecordingExists = false; 
      Console.WriteLine("No New Recording exists"); 
      System.Threading.Thread.Sleep(300000); 
     } 
+5

'निर्देशिका। गेटफाइल (डायरपाथ," * .wma ")। लंबाई == 0' WMA एक्सटेंशन को छोड़कर हर दूसरी फ़ाइल को फ़िल्टर करने के लिए। आप http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx देख सकते हैं जो शायद आपके उद्देश्य –

उत्तर

21
if (Directory.GetFiles(dirPath).Length == 0) 

अगर कोई फ़ाइलें हैं यह जाँच कर रहा है ... तो आप "New Recording exists" रिपोर्ट कर रहे हैं। मुझे लगता है कि आप बस अपने तर्क गलत तरीके से है। else वह जगह है जहां इसका मतलब है कि आपको कुछ फाइलें मिली हैं।

इसके अलावा, आप सिर्फ *.wma फ़ाइलों के लिए जाँच करने के लिए चाहते हैं तो आप the GetFiles overload that takes a search pattern parameter उदाहरण के लिए उपयोग कर सकते हैं,:

if (Directory.GetFiles(dirPath, "*.wma").Length == 0) 
{ 
    //NO matching *.wma files 
} 
else 
{ 
    //has matching *.wma files 
} 

साइड नोट: आप FileSystemWatcher में रुचि हो सकती है, इस होगा परिवर्तनों के लिए अपने रिकॉर्डिंग फ़ोल्डर की निगरानी करने में सक्षम बनाता है (जब फाइलें जोड़ दी जाती हैं)। यह हर 5 मिनट में मतदान के लिए आपकी आवश्यकता को खत्म कर देगा, और फ़ाइल को जोड़ा जाने पर आपको तत्काल निष्पादन मिलता है,

+0

की सेवा करेगा मैं 2 से अधिक की जांच कैसे कर सकता हूं उदाहरण के लिए एक्सटेंशन, .xls और .xlsx – wearybands

+0

@wearybands: [उत्तर] के लिए खोज करके (http://stackoverflow.com/questions/3527203/getfiles-with-multiple-extentions) – musefan

1

पर टिकने के लिए 5 मिनट के अंतराल के इंतजार के विपरीत, आपके सभी तर्कों को उलट दिया गया है! ;)
यहाँ आप सही कोड है:

 bool NewRecordingExists; 
     string dirPath = @"c:\recordings\"; 
     string[] fileNames = Directory.GetFiles(dirPath, "*.wma", SearchOption.TopDirectoryOnly); 
     if (fileNames.Length != 0) 
     { 
      NewRecordingExists = true; 
      foreach (string fileName in fileNames) 
      { 
       Console.WriteLine("New Recording exists: {0}", fileName); 
       /* do you process for each file here */ 
      } 
     } 
     else 
     { 
      NewRecordingExists = false; 
      Console.WriteLine("No New Recording exists"); 
      System.Threading.Thread.Sleep(300000); 
     } 

हालांकि, मैं आप आवेदन के लिए System.Timers.Timer वर्ग का उपयोग करना चाहिये!

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