如何读取特定文件夹内的所有文件


103

我想读取C#.net中特定文件夹内的所有xml文件

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

我在类别文件夹中有多个产品。.要循环该文件夹,应获取所有产品xml文件名。

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

5
你尝试了什么?什么没用?您在哪里遇到困难?tinyurl.com/so-hints
Oded

Answers:


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

请注意,上面使用的是.NET 4.0功能;在以前的版本中,请替换EnumerateFilesGetFiles)。此外,更换File.ReadAllText与读取XML文件在您的首选方式-也许XDocumentXmlDocumentXmlReader


1
“System.IO.Directory”不包含关于“EnumerateFiles”的定义

4
“使用System.IO;” 辉煌!!为什么更多的人不能这样做?试图找到人们在说什么可能会很烦人
user001 2015年

1
@ user001,因为通常IDE可以为您查找并添加此类内容-只需按ctrl +。
马克·格拉韦尔

1
@MarcGravell哈哈通常:(
user001

我认为最好在循环内使用StringBuilder附加每个文件的内容。sb.Append(File.ReadAllText(file));
e0x3

25
using System.IO;

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



6

如果要复制一个文件夹中的所有文本文件以合并并复制到另一个文件夹,则可以执行以下操作:

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

试试这个对我有用。

语法是 GetFiles(string path, string searchPattern);

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

此代码将返回文件App_Data夹中的所有文件。

第二个参数表示带有文件扩展名的searchPattern,其中第一个*表示文件名,第二个*表示文件格式或文件扩展名,例如(* .png-任何.png格式的文件名。


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

       }

1
尽管此解决方案可以解决OP的问题,但建议不要仅编写代码答案,因为这可能对将来的用户没有太大帮助。详细一点。该解决方案提供什么?如何使OP受益?等
杰夫·詹姆斯

我昨天才看到代码,但那不是复制粘贴
Rahul sahu

我并不是在暗示您会复制/粘贴。我已经更新了我的评论。不过,我的评论仍然有效。阐述。
杰夫·詹姆斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.