this question का उत्तर देने का प्रयास करने में, मुझे यह जानकर आश्चर्य हुआ कि उस फ़ाइल को पहले से मौजूद होने पर एक नई फ़ाइल बनाने का प्रयास करना एक अद्वितीय अपवाद प्रकार नहीं फेंकता है, यह सिर्फ फेंकता है एक सामान्य IOException
।अपवाद कोड, या "फ़ाइल पहले से मौजूद है" का पता लगाने का प्रकार
इसलिए मैं यह सोचने के लिए छोड़ रहा हूं कि IOException
किसी मौजूदा फ़ाइल का परिणाम है, या कुछ अन्य आईओ त्रुटि है।
अपवाद में एचआरएसल्ट है, लेकिन यह संपत्ति सुरक्षित है, और इस प्रकार मेरे लिए अनुपलब्ध है।
एकमात्र अन्य तरीका जो मैं देख सकता हूं वह पैटर्न स्ट्रिंग से मेल खाता है जो भयानक लगता है।
उदाहरण:
try
{
using (var stream = new FileStream("C:\\Test.txt", FileMode.CreateNew))
using (var writer = new StreamWriter(stream))
{
//write file
}
}
catch (IOException e)
{
//how do I know this is because a file exists?
}
आप क्यों नहीं बस यदि फ़ाइल मौजूद है देखने के लिए जाँच नहीं है? चुम्मा। –
क्योंकि एक फाइल सिस्टम स्वाभाविक रूप से अस्थिर है। फ़ाइलों को किसी भी समय बनाया जा सकता है (न केवल मेरे द्वारा)। – GazTheDestroyer
कई त्रुटियों को एक अपवाद में लंपाने के साथ उन्हें अलग करने का कोई तरीका नहीं है, शायद .NET फ्रेमवर्क डिज़ाइन की सबसे खराब विशेषता है। आपके पास डिस्क पूर्ण, नेटवर्क पथ नहीं मिला, आदि IOExceptions के साथ एक ही समस्या है। यहां तक कि यदि आप एचआरएसल्ट कोड प्राप्त करते हैं, तो यदि आपके कोड को लिनक्स पर मोनो के तहत भी चलाने की आवश्यकता है, तो यह – jimvfr