bagaimana membaca semua file di dalam folder tertentu

103

Saya ingin membaca semua file xml di dalam folder tertentu di c # .net

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

saya memiliki beberapa produk dalam folder kategori .. ingin memutar folder tersebut dan harus mendapatkan semua nama file produk xml.

XDocument doc2 = XDocument.Load((PG.SMNR.XMLDataSourceUtil.GetXMLFilePath(Locale, "Products/category/x1.xml")));
ram
sumber
5
Apa yang sudah kamu coba? Apa yang tidak berhasil? Di mana Anda mengalami kesulitan? tinyurl.com/so-hints
Oded

Jawaban:

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

Perhatikan bahwa di atas menggunakan fitur .NET 4.0; di versi sebelumnya ganti EnumerateFilesdengan GetFiles). Juga, ganti File.ReadAllTextdengan cara yang Anda sukai untuk membaca file xml - mungkin XDocument, XmlDocumentatau file XmlReader.

Marc Gravell
sumber
1
'System.IO.Directory' tidak berisi definisi untuk 'EnumerateFiles'
ram
4
"menggunakan System.IO;" Cemerlang!! Mengapa lebih banyak orang tidak dapat memberikan ini? Sangat menjengkelkan untuk mencoba menemukan apa yang sedang dibicarakan orang
pengguna001
1
@ user001 karena biasanya IDE dapat menemukan dan menambahkan hal-hal seperti itu untuk Anda - cukup tekan ctrl +.
Marc Gravell
1
@MarcGravell haha ​​biasanya :(
pengguna001
Saya pikir lebih baik menggunakan StringBuilder di dalam loop untuk menambahkan konten setiap file. sb.Append (File.ReadAllText (file));
e0x3
25
using System.IO;

DirectoryInfo di = new DirectoryInfo(folder);
FileInfo[] files = di.GetFiles("*.xml");
Adi
sumber
14
using System.IO;

//...

  string[] files;

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

Coba ini Berhasil untuk saya ..

Sintaksnya adalah GetFiles(string path, string searchPattern);

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

Kode ini akan mengembalikan semua file di dalam App_Datafolder.

Parameter kedua . menunjukkan pola pencarian dengan Ekstensi File di mana yang pertama * untuk nama file dan yang kedua untuk format file atau Ekstensi File seperti (* .png - nama file apa pun dengan format .png.

Chandan Kumar
sumber
6

Jika Anda ingin menyalin semua file teks dalam satu folder untuk digabungkan dan disalin ke folder lain, Anda dapat melakukan ini untuk mencapai itu:

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());
      }   
    }
  }
}
gaurav balyan
sumber
0
    using System.IO;
    string[] arr=Directory.GetFiles("folderpath","*.Fileextension");
      foreach(string file in arr)
       {

       }
Rahul sahu
sumber
1
Meskipun solusi ini dapat menjawab masalah OP, disarankan untuk tidak hanya menulis jawaban hanya kode karena ini mungkin tidak terlalu membantu pengguna di masa mendatang. Rumit sedikit. Apa yang diberikan solusi ini? Bagaimana ini akan menguntungkan OP? dll.
Geoff James
saya baru saja melihat kode kemarin tapi itu bukan copy paste
Rahul sahu
Saya tidak menyiratkan bahwa Anda akan menyalin / menempel. Saya telah memperbarui komentar saya. Tetap saja, komentar saya masih berlaku. Rumit.
Geoff James