belirli bir klasördeki tüm dosyalar nasıl okunur


103

C # .net içindeki belirli bir klasördeki tüm xml dosyalarını okumak istiyorum

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

Kategori klasöründe birden fazla ürünüm var .. klasörü döngü istiyorum ve tüm ürün xml dosya adlarını almalıyım.

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

5
Ne denedin Ne işe yaramadı? Nerede zorluk yaşıyorsun? tinyurl.com/so-hints
Oded

Yanıtlar:


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

Yukarıdakilerin bir .NET 4.0 özelliği kullandığını unutmayın; önceki sürümlerde ) EnumerateFilesile değiştirin GetFiles. Ayrıca, yerine File.ReadAllTextbelki - xml dosyalarını okuma Tercih yolu ile XDocument, XmlDocumentya da XmlReader.


1
'System.IO.Directory', 'EnumerateFiles' için bir tanım içermiyor
ram

4
"using System.IO;" Parlak!! Neden daha fazla insan bunu veremiyor? İnsanların ne hakkında konuştuğunu bulmaya çalışmak çok can sıkıcı olabilir
user001

1
@ user001 çünkü genellikle IDE sizin için bu tür şeyleri bulabilir ve ekleyebilir - sadece ctrl + tuşlarına basın.
Marc Gravell

1
@MarcGravell haha ​​genellikle :(
user001

Her dosyanın içeriğini eklemek için StringBuilder'ı döngü içinde kullanmanın daha iyi olacağını düşünüyorum. sb.Append (File.ReadAllText (dosya));
e0x3

25
using System.IO;

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

14
using System.IO;

//...

  string[] files;

  if (Directory.Exists(Path)) {
    files = Directory.GetFiles(Path, @"*.xml", SearchOption.TopDirectoryOnly);
    //...

7

Bunu dene Benim için çalışıyor ..

Sözdizimi GetFiles(string path, string searchPattern);

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

Bu kod, App_Dataklasör içindeki tüm dosyaları döndürecektir .

İkinci parametre . ilk * dosya adı için ve ikincisi dosya formatı veya Dosya Uzantısı gibi (* .png - .png formatına sahip herhangi bir dosya adı) olmak üzere Dosya Uzantılı searchPattern'i belirtir.



6

Tüm metin dosyalarını birleştirmek ve başka bir klasöre kopyalamak için bir klasördeki tüm metin dosyalarını kopyalamak istiyorsanız, bunu başarmak için bunu yapabilirsiniz:

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
Bu çözüm OP'nin sorununa cevap verebilirken, yalnızca kod içeren bir yanıt yazmamanız tavsiye edilir, çünkü bu gelecekteki kullanıcılar için çok yararlı olmayabilir. Biraz detaylandırın. Bu çözüm ne sağlıyor? OP'ye nasıl fayda sağlayacak? vb.
Geoff James

dün kodu gördüm ama bu bir kopya yapıştırma değil
Rahul sahu

Kopyaladığını / yapıştırdığını ima etmiyordum. Yorumumu güncelledim. Yine de yorumum hala geçerli. Ayrıntılı.
Geoff James
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.