कैसे विशेष फ़ोल्डर के अंदर सभी फ़ाइलों को पढ़ने के लिए


103

मैं c # .net में एक विशेष फ़ोल्डर के अंदर सभी xml फ़ाइलों को पढ़ना चाहता हूं

XDocument doc2 = XDocument.Load((PG.SMNR.XMLDataSourceUtil.GetXMLFilePath(Locale, "Products/category/product.xml")));

मेरे पास श्रेणी फ़ोल्डर में कई उत्पाद हैं .. फ़ोल्डर को लूप करना चाहते हैं और सभी उत्पाद xml फ़ाइल नाम प्राप्त करना चाहिए।

XDocument doc2 = XDocument.Load((PG.SMNR.XMLDataSourceUtil.GetXMLFilePath(Locale, "Products/category/x1.xml")));

5
आपने क्या प्रयास किया है? क्या काम नहीं आया? आपको कहाँ कठिनाइयाँ हो रही हैं? smallurl.com/so-hints
ओडेड

जवाबों:


247
using System.IO;
...
foreach (string file in Directory.EnumerateFiles(folderPath, "*.xml"))
{
    string contents = File.ReadAllText(file);
}

ध्यान दें कि .NET .NET सुविधा का उपयोग करता है; पिछले संस्करणों में ) के EnumerateFilesसाथ बदलें GetFiles। इसके अलावा, File.ReadAllTextxml फ़ाइलों को पढ़ने के अपने पसंदीदा तरीके से बदलें - शायद XDocument, XmlDocumentया ए XmlReader


1
'System.IO.Directory' में 'EnumerateFiles' की परिभाषा नहीं है
RAM

4
"System.IO का उपयोग करना" प्रतिभाशाली!! अधिक लोग इसे क्यों नहीं दे सकते हैं? लोग जो बात कर रहे हैं, उसे खोजने की कोशिश करना कितना कष्टप्रद हो सकता है
user001

1
@ user001 क्योंकि आमतौर पर IDE आपके लिए ऐसी चीजें ढूंढ और जोड़ सकता है - बस ctrl + दबाएं।
मार्क Gravell

1
@MarcGravell haha ​​आमतौर पर :(
user001

मुझे लगता है कि हर फाइल के कंटेंट को जोड़ने के लिए लूप के अंदर स्ट्रिंगबर्ल का इस्तेमाल करना बेहतर है। sb.Append (File.ReadAllText (फ़ाइल));
e0x3

25
using System.IO;

DirectoryInfo di = new DirectoryInfo(folder);
FileInfo[] files = di.GetFiles("*.xml");


7

यह कोशिश करो यह मेरे लिए काम कर रहा है ..

वाक्य-विन्यास है GetFiles(string path, string searchPattern);

var filePath = Server.MapPath("~/App_Data/");
string[] filePaths = Directory.GetFiles(@filePath, "*.*");

यह कोड App_Dataफ़ोल्डर के अंदर सभी फाइलों को वापस कर देगा ।

दूसरा पैरामीटर फ़ाइल एक्सटेंशन के साथ खोजपत्र को इंगित करता है, जहाँ पहला * फ़ाइल नाम के लिए है और दूसरा फ़ाइल के प्रारूप के लिए है या फ़ाइल की तरह है (* .png - .png प्रारूप के साथ कोई फ़ाइल नाम।



6

यदि आप एक फ़ोल्डर में सभी पाठ फ़ाइलों को एक फ़ोल्डर में मर्ज करने और कॉपी करने के लिए देख रहे हैं, तो आप इसे प्राप्त करने के लिए ऐसा कर सकते हैं:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace HowToCopyTextFiles
{
  class Program
  {
    static void Main(string[] args)
    {
      string mydocpath=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);     
      StringBuilder sb = new StringBuilder();
      foreach (string txtName in Directory.GetFiles(@"D:\Links","*.txt"))
      {
        using (StreamReader sr = new StreamReader(txtName))
        {
          sb.AppendLine(txtName.ToString());
          sb.AppendLine("= = = = = =");
          sb.Append(sr.ReadToEnd());
          sb.AppendLine();
          sb.AppendLine();   
        }
      }
      using (StreamWriter outfile=new StreamWriter(mydocpath + @"\AllTxtFiles.txt"))
      {    
        outfile.Write(sb.ToString());
      }   
    }
  }
}

0
    using System.IO;
    string[] arr=Directory.GetFiles("folderpath","*.Fileextension");
      foreach(string file in arr)
       {

       }

1
जबकि यह समाधान ओपी की समस्या का जवाब दे सकता है, यह सलाह दी जाती है कि केवल एक कोड-केवल उत्तर न लिखें क्योंकि यह भविष्य के उपयोगकर्ताओं के लिए बहुत उपयोगी नहीं हो सकता है। थोड़ा विस्तार करो। यह समाधान क्या प्रदान करता है? यह ओपी को कैसे फायदा पहुंचाने वाला है? आदि
ज्योफ जेम्स

मैंने कल ही कोड देखा लेकिन वह कॉपी पेस्ट नहीं है
राहुल साहू

मैं नहीं कह रहा था कि आप कॉपी / पेस्ट करेंगे। मैंने अपनी टिप्पणी अपडेट कर दी है। फिर भी, मेरी टिप्पणी अभी भी खड़ी है। विस्तार से बताएं।
ज्योफ जेम्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.