प्रोजेक्ट में मौजूद फ़ोल्डर से फ़ाइलें पढ़ें


87

मेरे पास एक सी # प्रोजेक्ट (विंडोज कंसोल एप्लीकेशन) है। मैंने प्रोजेक्ट के अंदर डेटा नाम का एक फोल्डर बनाया है । फ़ोल्डर डेटा के अंदर दो पाठ फ़ाइलें हैं।

मैं "डेटा" फ़ोल्डर से पाठ फ़ाइलों को कैसे पढ़ सकता हूं। मैंने नीचे की कोशिश की।

string[] files = File.ReadAllLines(@"Data\Names.txt")

यह त्रुटि है जो फ़ाइल नहीं मिली।

मैंने पहले कुछ पोस्ट किए गए स्टाकेवरफ्लो उत्तर की जाँच की है और फिर उनमें से कोई भी मेरे लिए काम नहीं कर रहा है।

मैं कैसे आगे बढ़ सकता हूं? धन्यवाद!


1
Google "वर्तमान निर्देशिका"। निष्पादन योग्य आपके सूइस कोड फ़ोल्डर से अत्यधिक नहीं चलता है!
— Ondrej Tucny

जब आप इस प्रोजेक्ट के निर्माण के लिए इस डेटा फ़ोल्डर को आउटपुट में कॉपी कर रहे हैं? तेह फ़ाइलों पर विकल्पों की जाँच करें और इसे सही करें।
— ryadavilli

सेटिंग को हमेशा आउटपुट डायरेक्टरी में कॉपी किया जाता है।
— SKJ

जवाबों:


122

नीचे दिए गए कोड को काम करना चाहिए:

string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Data\Names.txt");
string[] files = File.ReadAllLines(path);

मेरे फ़ोल्डर और फ़ाइलें असेंबली फ़ोल्डर में मौजूद नहीं हैं: s .. ऐसा क्यों है?
— bohem.be

33
दृश्य स्टूडियो में, फ़ाइल को चिह्नित और फिर सेट Build Actionकरने के लिए Content, और Copy to Output Directoryकरने के लिएCopy always
— फ्लोरियन मोजर

3
बस @FlorianMoser संकेतन को लागू करने के लिए @ "Data \ Name.txt" का उपयोग करें
— एलेक्जेंडर

उस '@' का मतलब क्या है?
— गमरू

@ वहाँ शब्दशः स्ट्रिंग शाब्दिक कहा जाता है, देखें stackoverflow.com/questions/3311988/…
— मोरबिया

34

यह निर्भर करता है कि आपका डेटा फ़ोल्डर कहां है

निर्देशिका प्राप्त करने के लिए जहां .exe फ़ाइल है:

AppDomain.CurrentDomain.BaseDirectory

वर्तमान निर्देशिका प्राप्त करने के लिए:

Environment.CurrentDirectory

तब आप अपनी निर्देशिका पथ को बदल सकते हैं ( @"\Data\Names.txt")


18

यदि आपको 'डेटा' नाम के फ़ोल्डर में सभी फ़ाइलों को प्राप्त करने की आवश्यकता है, तो बस इसे नीचे के रूप में कोड करें

string[] Documents = System.IO.Directory.GetFiles("../../Data/");

अब 'डॉक्यूमेंट्स' में 'डेटा' फोल्डर 'डेटा' में दो टेक्स्ट फाइल्स के पूरे ऑब्जेक्ट नेम की सरणी होती है।


@ बनिएप: क्या आपको पाठ फ़ाइल की सामग्री को पढ़ने की ज़रूरत है या केवल फ़ोल्डर में फ़ाइलों को जानने के लिए?
— उथिस्ट्रन सेल्वराज

13

मेरे पास एक सी # प्रोजेक्ट (विंडोज कंसोल एप्लीकेशन) है। मैंने प्रोजेक्ट के अंदर Images नाम का फोल्डर बनाया है। एक इको फाइल है जिसे MyIcon.ico कहा जाता है। मैंने नीचे की तरह इमेज फ़ोल्डर के अंदर MyIcon.ico एक्सेस किया है।

this.Icon = new Icon(@"../../Images/MyIcon.ico");

9

कॉपी हमेशा आउटपुट डायरेक्टरी में सेट किया जाता है, फिर निम्नलिखित को आज़माएँ:

 Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
 String Root = Directory.GetCurrentDirectory();

यह स्वीकृत उत्तर होना चाहिए - यह मजबूत है कि फ़ाइल किसी लाइब्रेरी में है या निष्पादन योग्य प्रोजेक्ट में है।
— तुललोचगोरम

0

Xamarin.iOS के लिए, यदि फ़ाइल मौजूद है तो आप फ़ाइल की सामग्री प्राप्त करने के लिए निम्न कोड का उपयोग कर सकते हैं।

var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var filename = Path.Combine(documents, "xyz.json");
if (File.Exists(filename))
{
var text =System.IO.File.ReadAllText(filename);
}

-1

इस कोड का उपयोग फोल्डर और सब-फोल्डर की सभी फाइलों को पढ़ने के लिए भी करें

class Program
{
    static void Main(string[] args)
    {

        getfiles get = new getfiles();
        List<string> files =  get.GetAllFiles(@"D:\Document");

        foreach(string f in files)
        {
            Console.WriteLine(f);
        }


        Console.Read();
    }


}

class getfiles
{
    public List<string> GetAllFiles(string sDirt)
    {
        List<string> files = new List<string>();

        try
        {
            foreach (string file in Directory.GetFiles(sDirt))
            {
                files.Add(file);
            }
            foreach (string fl in Directory.GetDirectories(sDirt))
            {
                files.AddRange(GetAllFiles(fl));
            }
        }
        catch (Exception ex)
        {

            Console.WriteLine(ex.Message);
        }



        return files;
    }
}

-1
string myFile= File.ReadAllLines(Application.StartupPath.ToString() + @"..\..\..\Data\myTxtFile.txt")

3
कृपया कुछ पाठ जोड़ें कि यह क्यों काम करता है / यह क्या करता है
— जिबोल्ट

1
हालांकि यह लेखकों के सवाल का जवाब दे सकता है, लेकिन इसमें कुछ स्पष्ट शब्दों और / या प्रलेखन के लिंक का अभाव है। रॉ कोड स्निपेट्स उनके आसपास कुछ वाक्यांशों के बिना बहुत उपयोगी नहीं हैं। आप यह भी पा सकते हैं कि कैसे एक अच्छा उत्तर लिखने में बहुत मददगार है। कृपया अपना उत्तर संपादित करें
— निक

-1

यह प्रयोग करें, यह काम कर रहा है।

string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"TestData\test.json");
var response = JsonConvert.DeserializeObject<Response>(File.ReadAllText(path));

कृपया ध्यान दें: आप सुनिश्चित करें कि फ़ाइल के गुणों को सेट करने की जरूरत है test.jsonके रूप में

"बिल्ड एक्शन" = "सामग्री"

"आउटपुट निर्देशिका में कॉपी करें" = "हमेशा कॉपी करें"


जब किसी पुराने प्रश्न का उत्तर दिया जाता है, तो आपका उत्तर अन्य StackOverflow उपयोगकर्ताओं के लिए अधिक उपयोगी होगा यदि आपने यह समझाने के लिए कुछ संदर्भ शामिल किए कि आपका उत्तर कैसे मदद करता है, विशेष रूप से उस प्रश्न के लिए जो पहले से ही स्वीकृत उत्तर है। देखें: कैसे मैं एक अच्छा जवाब लिख सकता हूं ।
— डेविड बक

-2

यह मेरे लिए मददगार था, अगर आप इसका इस्तेमाल करते हैं

var dir = Directory.GetCurrentDirectory()

वर्तमान फ़ोल्डर के बाहर पथ भराव हो सकता है, यह इस पथ को प्रभावित करेगा \ बिन \ डीबग मैं आपको क्या सलाह देता हूं, यह है कि आप इसका उपयोग कर सकते हैं

string dir = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName

फिर dir value प्रिंट करें और सत्यापित करें कि पथ आपको दे रहा है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.