2010-01-07 8 views
43

मैं एक DirectoryInfo.Rename (करने के लिए) या FileInfo.Rename (करने के लिए) विधि कहीं भी नहीं मिल सका नाम बदल रहा है। तो, मैं अपने ही लिखा था और मैं इसे यहाँ पोस्ट कर रहा हूँ किसी को भी अगर वे इसे जरूरत है क्योंकि क्यों न हम स्वीकार करते हैं का उपयोग करने के लिए,: MoveTo तरीकों overkill हैं और हमेशा अतिरिक्त तर्क की आवश्यकता होगी अगर आप सिर्फ एक निर्देशिका या फ़ाइल नाम बदलना चाहते हैं:सी # में एक निर्देशिका

public static class DirectoryExtensions 
{ 
    public static void RenameTo(this DirectoryInfo di, string name) 
    { 
     if (di == null) 
     { 
      throw new ArgumentNullException("di", "Directory info to rename cannot be null"); 
     } 

     if (string.IsNullOrWhiteSpace(name)) 
     { 
      throw new ArgumentException("New name cannot be null or blank", "name"); 
     } 

     di.MoveTo(Path.Combine(di.Parent.FullName, name)); 

     return; //done 
    } 
} 
+2

आप पूरे प्रश्न reformulate और एक जवाब अपने समाधान युक्त पोस्ट कर सकते हैं? – Coincoin

+5

कोई सवाल नहीं है? :( – Sapph

+1

अपने आप में एक ओवरकिल की तरह लगता है। –

उत्तर

88

वहाँ से चलती है और नाम के बीच कोई अंतर नहीं है; आपको बस Directory.Move पर कॉल करना चाहिए।

सामान्य में, अगर आप केवल एक ही आपरेशन कर रहे हैं, आप के बजाय FileInfo और DirectoryInfo वस्तुओं बनाने की File और Directory कक्षाओं में static तरीकों का उपयोग करना चाहिए।

अधिक सलाह के लिए जब फ़ाइलें और निर्देशिका के साथ काम करने, here देखें।

+3

ध्यान दें कि 'foo' से' Foo' जैसे स्विचिंग मामलों को एक IOException फेंक दिया जाएगा जब एक सरल 'Directory.Move' के साथ किया जाता है दोनों तो वहाँ एक अंतर है ... बस कह, बैटमैन एक ही मार्ग के रूप में माना जाता है।। – Kabbalah

49

आप इसे आगे बढ़ना चाहिए:

Directory.Move(source, destination); 
12

एक पहले से मौजूद है। यदि आप System.IO नामस्थान के "मूव" वाक्यविन्यास को प्राप्त नहीं कर सकते हैं। माइक्रोसॉफ्ट के भीतर एक स्थैतिक वर्ग FileSystem है। माइक्रोसॉफ्ट.विज़ुअल बेसिक.फाइलियो नेमस्पेस जिसमें RenameDirectory और RenameFile दोनों पहले से ही हैं।

SLaks से उल्लेख किया है, यह सिर्फ Directory.MoveFile.Move और के लिए एक आवरण है।

+3

+1 पवित्र बकवास! –

+9

सभी वे करते हैं मानकों को मान्य और फोन 'Directory.Move' और' File.Move' है। मैं जाँच – SLaks

+3

हाँ, सहमत हो गया। मुझे लगता है कि उसकी शिकायत इसलिए है क्योंकि "मूव" आपको स्वचालित रूप से "नाम बदलें" नहीं सोचता है। अगर वह सिंटेक्स चाहता है, तो वह उस प्रारूप में मौजूद है, बस एक और नामस्थान में। – jsmith

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