2012-08-02 10 views
5

सहित विंडोज-आधारित फ़ाइल पथों को सत्यापित करने के लिए नियमित अभिव्यक्ति मैं अपने पूर्ण पथ के साथ फ़ाइल नाम को सत्यापित करना चाहता था। मैंने नीचे कुछ नियमित अभिव्यक्तियों की कोशिश की लेकिन उनमें से कोई भी सही ढंग से काम नहीं किया। नीचे वर्णित के रूप मेंयूएनसी पथ

^(?:[\w]\:|\\)(\\[a-z_\-\s0-9\.]+)+\.(txt|gif|pdf|doc|docx|xls|xlsx)$ 
and 
^(([a-zA-Z]\:)|(\\))(\\{1}|((\\{1})[^\\]([^/:*?<>""|]*))+)$ 
etc... 

मेरे आवश्यकता है: कहना यदि फ़ाइल का नाम है "c: \ Demo.txt" तो यह कोई डबल स्लैश शामिल किया जाना चाहिए (c:\\Demo\\demo.text) बिना किसी अतिरिक्त पेट की तरह की तरह हर possibilites की जाँच करनी चाहिए (c::\Demo\demo.text)। यूएनसी फाइलों को स्वीकार करना चाहिए (\\staging\servers) और अन्य सत्यापन भी। कृपया मदद करे। मैं वास्तव में यहाँ अटक गया हूँ।

+0

क्या यह होमवर्क है? – Steve

+0

वास्तव में होमवर्क नहीं है। कुछ महत्वपूर्ण काम इस के bcoz अटक गया है। – Yash

+1

यदि आपकी फ़ाइल अपलोड की गई है तो क्या आप वास्तव में पथ नाम से या केवल फ़ाइल नाम भाग से चिंतित हैं? – Steve

उत्तर

2

आप फ़ाइल क्लास का उपयोग क्यों नहीं कर रहे हैं? हमेशा इसका इस्तेमाल करें!

File f = null; 
string sPathToTest = "C:\Test.txt"; 
try{ 
f = new File(sPathToTest); 
}catch(Exception e){ 
    Console.WriteLine(string.Format("The file \"{0}\" is not a valid path, Error : {1}.", sPathToTest , e.Message); 
} 

MSDN: http://msdn.microsoft.com/en-gb/library/system.io.file%28v=vs.80%29.aspx

हो सकता है कि तुम सिर्फ File.Exists (http://msdn.microsoft.com/en-gb/library/system.io.file.exists%28v=vs.80%29.aspx)

इसके अलावा पथ वर्ग के लिए एक बार देख ले लिए देख रहे हैं (http://msdn.microsoft.com/en-us/library/system.io.path.aspx)

GetAbsolutePath हो सकता है आप जो चाहते हैं उसे पाने का एक तरीका! (http://msdn.microsoft.com/en-us/library/system.io.path.getfullpath.aspx)

string sPathToTest = "C:\Test.txt"; 
string sAbsolutePath = ""; 
try{ 
    sAbsolutePath = Path.GetAbsolutePath(sPathToTest); 
    if(!string.IsNullOrEmpty(sAbsolutePath)){ 
    Console.WriteLine("Path valid"); 
    }else{ 
    Console.WriteLine("Bad path"); 
    } 
}catch(Exception e){ 
    Console.WriteLine(string.Format("The file \"{0}\" is not a valid path, Error : {1}.", sPathToTest , e.Message); 

} 
+0

मैंने यह भी कोशिश की है। लेकिन यह मदद करने में अच्छा नहीं था। तो मैंने नियमित अभिव्यक्ति के लिए जाने का विचार किया .. – Yash

+0

फ़ाइल अपलोड की जाएगी। फ़ाइल का नाम – Yash

+0

अनुरोध में आ रहा है आम तौर पर इनपुट को मान्य करने के लिए अपवाद-हैंडलिंग का उपयोग करना एक अच्छा विचार नहीं है क्योंकि यह महत्वपूर्ण कम्प्यूटेशनल ओवरहेड होता है। –

0

आप केवल फ़ाइल नाम भाग में रुचि (और नहीं पूरे रास्ते क्योंकि आप अपलोड के माध्यम से फ़ाइल प्राप्त) तो आप कुछ इस तरह की कोशिश कर सकते हैं:

string uploadedName = @"XX:\dem<<-***\demo.txt"; 

int pos = uploadedName.LastIndexOf("\\"); 
if(pos > -1) 
    uploadedName = uploadedName.Substring(pos+1); 

var c = Path.GetInvalidFileNameChars(); 
if(uploadedName.IndexOfAny(c) != -1) 
    Console.WriteLine("Invalid name"); 
else 
    Console.WriteLine("Acceptable name"); 

हो जाएगा ताकि अपने कोड के तर्क को चलाने के तरीके के रूप में अपवादों के उपयोग से बचें।

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