cómo leer todos los archivos dentro de una carpeta particular


103

Quiero leer todos los archivos xml dentro de una carpeta en particular en c # .net

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

Tengo varios productos en la carpeta de categorías ... quiero recorrer la carpeta y debería obtener todos los nombres de archivo xml de productos.

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

5
¿Qué has probado? ¿Qué no funcionó? ¿Dónde tienes dificultades? tinyurl.com/so-hints
Oded

Respuestas:


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

Tenga en cuenta que lo anterior utiliza una función .NET 4.0; en versiones anteriores reemplazar EnumerateFilescon GetFiles). Además, reemplace File.ReadAllTextcon su forma preferida de la lectura de archivos xml - tal vez XDocument, XmlDocumento un XmlReader.


1
'System.IO.Directory' no contiene una definición para 'EnumerateFiles'
ram

4
"usando System.IO;" ¡¡Brillante!! ¿Por qué más personas no pueden dar esto? Puede ser muy molesto intentar encontrar de qué habla la gente
user001

1
@ user001 porque, por lo general, el IDE puede encontrar y agregar esas cosas por usted, simplemente presione ctrl +.
Marc Gravell

1
@MarcGravell jaja normalmente :(
user001

Creo que es mejor usar StringBuilder dentro del ciclo para agregar el contenido de cada archivo. sb.Append (File.ReadAllText (archivo));
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);
    //...


6

Si está buscando copiar todos los archivos de texto en una carpeta para fusionarlos y copiarlos en otra carpeta, puede hacer esto para lograrlo:

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

6

Prueba esto. Me está funcionando.

La sintaxis es GetFiles(string path, string searchPattern);

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

Este código devolverá todos los archivos dentro de la App_Datacarpeta.

El segundo parámetro . indica el patrón de búsqueda con extensión de archivo donde el primer * es para el nombre del archivo y el segundo es para el formato del archivo o la extensión del archivo como (* .png - cualquier nombre de archivo con formato .png.


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

       }

1
Si bien esta solución puede responder al problema del OP, se recomienda no escribir solo una respuesta de solo código, ya que esto puede no ser muy útil para los futuros usuarios. Elabora un poco. ¿Qué aporta esta solución? ¿Cómo beneficiará al OP? etc.
Geoff James

Acabo de ver el código de ayer, pero eso no es copiar y pegar
Rahul sahu

No estaba insinuando que copiarías / pegarías. Actualicé mi comentario. Aún así, mi comentario sigue en pie. Elaborar.
Geoff James
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.