2010-09-30 20 views
140

है System.IO.Path में कुछ भी बनाया गया है जो मुझे केवल फ़ाइलपैथ देता है?पथ से फ़ाइल नाम के बिना पूरा पथ प्राप्त करें जिसमें फ़ाइल नाम

उदाहरण के लिए

, अगर मैं एक string

@ है "c: \ वेबसर्वर \ सार्वजनिक \ mycompany \ कॉन्फ़िगरेशन \ promo.xml",

कोई बीसीएल विधि दे देंगे कि है मुझे

"सी: \ webserver \ public \ myCompany \ configs \"?

+5

संभव डुप्लिकेट http://stackoverflow.com/questions/674479/how-do-i-get-the- निर्देशिका-से-ए-फाइल-फुल-पथ) – bluish

+0

एफडब्ल्यूआईडब्ल्यू: मैंने "पथ" के पथ के प्रबंधन पर "छोड़ दिया" है और हम यूएनसी के साथ बेहतर उम्मीदों और एकरूपता के साथ अपने स्वयं के तरीकों का उपयोग करते हैं (GetDirectoryName का उपयोग करने का प्रयास करें यूएनसी पथ) और सम्मेलन (उदाहरण के लिए पीछे /)। – user2864740

उत्तर

175

Path.GetDirectoryName() ... लेकिन आपको यह जानना होगा कि जिस मार्ग में आप जा रहे हैं, इसमें फ़ाइल का नाम होता है; यह बस पथ से अंतिम बिट को हटा देता है, चाहे वह फ़ाइल नाम या निर्देशिका का नाम हो (यह वास्तव में कोई विचार नहीं है)।

आप अपने रास्ते पर File.Exists() और/या Directory.Exists() परीक्षण से पहले मान्य सकता है पहले अगर आप कॉल करने के लिए (अनुगामी रिवर्स साथ Path.GetDirectoryName

+2

'फ़ाइल.एक्सिस्ट्स()' को कॉल करने की कोई आवश्यकता नहीं है। दरअसल, यह उस मामले में काउंटर-उत्पादक है जहां निर्देशिका नाम खोजने का आपका कारण इसे बनाना है यदि यह पहले से मौजूद नहीं है। –

+2

उसका उदाहरण स्पष्ट रूप से फ़ाइल नाम के साथ एक पथ नोट करता है। यदि वह उन पथों का पैटर्न है जो वह परीक्षण कर रहे हैं, और यदि वे पथ मौजूदा फाइलों का प्रतिनिधित्व करते हैं, तो फ़ाइल.इक्सिस्ट() निश्चित रूप से उपयोगी होगा, क्या आप सहमत नहीं होंगे? क्योंकि स्थिति अन्यथा हो सकती है, बेशक, मैं बस सुझाव दे रहा था कि वह फ़ाइल और/या निर्देशिका पर मौजूदियों के तरीकों का उपयोग कर सकता है; जाहिर है, उसकी स्थिति के लिए उपयुक्त है। –

+0

हां, फ़ाइल नाम वाला पथ। फ़ाइल में संकेत देने के लिए इसमें कुछ भी नहीं है, क्योंकि फ़ाइल नाम पहले आते हैं। –

53
Console.WriteLine(Path.GetDirectoryName(@"C:\hello\my\dear\world.hm")); 
+0

यह सबसे अच्छा है। पथ विधियों का उपयोग करने के लिए 'System.IO;' का उपयोग करना याद रखें –

45

Path.GetDirectoryName() रिटर्न निर्देशिका का नाम, आप क्या चाहते हैं के लिए बहुत जरूरत को देखने के लिए solidus चरित्र) आप Path.GetDirectoryName(filePath) + Path.DirectorySeparatorChar पर कॉल कर सकते हैं।

+6

+1 पथ। डायरेक्टरी SeparatorChar सहायक था – mack

4

मैं इस का इस्तेमाल किया और यह अच्छी तरह से काम करता है:

string[] filePaths = Directory.GetFiles(Path.GetDirectoryName(dialog.FileName)); 

foreach (string file in filePaths) 
{ 
    if (comboBox1.SelectedItem.ToString() == "") 
    { 
     if (file.Contains("c")) 
     { 
      comboBox2.Items.Add(Path.GetFileName(file)); 
     } 
    } 
} 
4

प्रयोग करें 'GetParent()' के रूप में दिखाया गया है, अच्छी तरह से काम करता है। आपको आवश्यकता के रूप में त्रुटि जांच जोड़ें।

var fn = openFileDialogSapTable.FileName; 
var currentPath = Path.GetFullPath(fn); 
currentPath = Directory.GetParent(currentPath).FullName; 
0
string fileAndPath = @"c:\webserver\public\myCompany\configs\promo.xml"; 

    string currentDirectory = Path.GetDirectoryName(fileAndPath); 

    string fullPathOnly = Path.GetFullPath(currentDirectory); 
की [मैं एक फ़ाइल की पूर्ण पथ से निर्देशिका कैसे प्राप्त करूं?] (
+2

कृपया इस जानकारी को बेहतर बनाने के लिए प्रश्न का उत्तर देने के तरीके के बारे में कुछ जानकारी प्रदान करें। –

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