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")));

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.


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");

14
using System.IO;

//...

  string[] files;

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

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.



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());
      }   
    }
  }
}

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

       }

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.