2011-04-30 9 views
67

que quiero leer todos los archivos XML dentro de una carpeta determinada en C# .NETcómo leer todos los archivos dentro de la carpeta en particular

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

tengo varios productos en carpeta de categoría .. quieren bucle de la carpeta y debería obtener toda nombres de archivo xml de producto.

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

Lo han intentado? ¿Qué no funcionó? ¿Dónde estás teniendo dificultades? http://tinyurl.com/so-hints – Oded

Respuesta

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

Nota la anterior utiliza una característica .NET 4.0; en versiones anteriores, reemplace EnumerateFiles con GetFiles). Además, reemplace File.ReadAllText con su forma preferida de leer archivos xml, quizás XDocument, XmlDocument o XmlReader.

+1

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

+6

@ram - Lo expliqué en mi respuesta; por favor, lea el texto en el ejemplo ... –

+1

Gracias Marc funciona ... :-) – ram

12
using System.IO; 

//... 

    string[] files; 

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

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

Si usted está buscando para copiar todos los archivos de texto en una carpeta a combinar y copiar a otra carpeta, puede hacer esto para lograr que:

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

     } 
+0

Mientras que esta solución puede responder al Problema de OP, se aconseja no solo escribir una respuesta de solo código, ya que puede no ser muy útil para los usuarios futuros. Elabore un poco. ¿Qué ofrece esta solución? ¿Cómo beneficiará al OP? Etc. –

+0

código visto ayer pero que no es una copia pegar –

+0

No estaba implicando que hubiera copiado/pegado. He actualizado mi comentario. Sin embargo, mi comentario sigue en pie. –

Cuestiones relacionadas