2013-04-06 2 views
13

क्या कोई मुझे बता सकता है कि मैं फ़ाइल data.xml के लिए सही फ़ाइल पथ कैसे प्राप्त कर सकता हूं? यह वह स्थान है जहां फ़ाइल बैठता है:सी # कंसोल के भीतर सही फ़ाइल पथ

enter image description here

यहाँ मेरी सी # कोड है कि अगर फ़ाइल आपूर्ति मार्ग के लिए मौजूद है देखने के लिए जाँच कर रहा है है:

public class Parser 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine(File.Exists("App_Data/data.xml")); 
     Console.Read(); 
    } 
} 

मैं झूठी हो रही है, जिसका अर्थ रखना इस तरह के एक दस्तावेज मौजूद नहीं है। यदि यह एक वेब अनुप्रयोग था,

"~/App_Data/data.xml" 
"/App_Data/data.xml" 
"App_Data/data.xml" 

मैं, क्या करना है पता होगा का उपयोग कर HttpContext और फ़ाइल में हो रही द्वारा: तो फ़ाइल पथ मैं अब तक की कोशिश की है शामिल हैं। लेकिन चूंकि यह एक कंसोल एप्लिकेशन है, मुझे नहीं पता।

संबंधित नोट पर, कंसोल एप्लिकेशन और निष्पादन योग्य एप्लिकेशन के बीच क्या अंतर है? क्या मैं सही हूं कि इसमें कोई फर्क नहीं पड़ता है, क्योंकि कंसोल ऐप एक निष्पादन योग्य ऐप हो सकता है यदि उसके पास मुख्य विधि है?

धन्यवाद

उत्तर

16

आप अपनी आउटपुट बिल्ड निर्देशिका में data.xml भी जोड़ सकते हैं। आपको फ़ाइल पर राइट क्लिक करना होगा और Copy to output directory option के लिए Copy if newer या Copy always का चयन करना होगा।

तो आप निम्नलिखित का उपयोग कर सकते हैं:

Console.WriteLine(File.Exists("App_Data/data.xml")); // Should print True 

हालांकि, अगर आप data.xml तो बदलने के लिए सिर्फ अपनी परियोजना के बाहर कहीं पूरा पथ को इंगित, उम्मीद (यह मानते हुए App_Data/data.xml को कॉपी किया है सी:/अस्थायी) तो:

Console.WriteLine(File.Exists("C:/Temp/App_Data/data.xml")); // Prints True 

इसके अलावा, अपने अन्य एक सांत्वना और एक निष्पादन योग्य आवेदन से संबंधित प्रश्न के लिए, exe एक अलग आवेदन प्रकार कंसोल या WPF या WinForms (कि जिस तरह से दृश्य स्टूडियो के रूप में इस तरह के हो सकते हैं इन समूहों)।

+0

मैंने अभी किया है, और इसे फिर से चलाया है, और अभी भी एक झूठा मिला है :( – Ciwan

+0

बिल्ड एक्शन सामग्री पर सेट है? – Leon

+2

आपको निष्पादन योग्य एप्लिकेशन बिट को स्पष्ट करने के लिए एक वोट मिला है। हाँ, मैंने इसे सामग्री और प्रतिलिपि पर हमेशा सेट किया है। – Ciwan

9

वर्तमान कार्यशील निर्देशिका प्राप्त करें:

Directory.GetCurrentDirectory() + "/App_Data/data.xml"; 

महत्वपूर्ण: App_Data उसी निर्देशिका में होना करने के लिए के रूप में अपने आवेदन है।

अपनी data.xml फ़ाइल प्राप्त करने का सबसे अच्छा तरीका यह है कि इसे अपने एप्लिकेशन के साथ ले जाएं या इसे सहेजने के लिए। आपके उपयोगकर्ता की "होम" निर्देशिका में (या जिसे विंडोज 8 के तहत भी कहा जाता है)।

+0

वैसे मैं विजुअल स्टूडियो 2012 के भीतर हूं, और यही वह जगह है जहां मैं अपना ऐप चलाने के लिए F5 बटन दबाता हूं। तो सभी प्रोजेक्ट फाइलें सी में बैठेगी:/उपयोगकर्ता/मी/मेरे दस्तावेज़/विजुअल स्टूडियो 2012/प्रोजेक्ट्स/एक्सएमएल पार्सर/एक्सएमएल पार्सर .. आदि आप जानते हैं, डिफ़ॉल्ट जगह जहां परियोजनाएं वीएस में जाती हैं। – Ciwan

+0

जहां तक ​​मुझे पता है कि एप्लिकेशन बनाया गया है और बिल्ड \ रिलीज निर्देशिका या sth में डाल दिया गया है; कमांडलाइन खोलें और अपनी एप्लिकेशन निर्देशिका के माध्यम से नेविगेट करें और जांचें कि .exe और कहां 'App_Data' निर्देशिका स्थित है। – akluth

+0

यहां वह जगह है जहां [App_Data फ़ोल्डर है] (https://imageshack.us/scaled/large/713/filepath.jpg)। – Ciwan

0

आप फ़ाइल को जोड़ सकते हैं और इसे प्राप्त करने के लिए प्रतिबिंब का उपयोग कर सकते हैं।

Steam s = Assembly.GetExecutingAssembly().GetManifestResourceStream("file name"); 
XmlDocument d = new XmlDocument(); 
steamReader r = new StreamReader(s); 
d.LoadXml(r.ReadToEnd()); 
r.Close(); 

इस आलेख को देखें। यह प्रतिबिंब का उपयोग करके फ़ाइल को एम्बेड और प्राप्त करने का तरीका दिखाता है: http://support.microsoft.com/kb/319292

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