【问题标题】:how to read all files inside particular folder如何读取特定文件夹中的所有文件
【发布时间】:2011-08-15 23:24:27
【问题描述】:

我想读取 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")));

【问题讨论】:

标签: c# xml file


【解决方案1】:
using System.IO;
...
foreach (string file in Directory.EnumerateFiles(folderPath, "*.xml"))
{
    string contents = File.ReadAllText(file);
}

请注意,上面使用了 .NET 4.0 功能;在以前的版本中,将 EnumerateFiles 替换为 GetFiles)。此外,将File.ReadAllText 替换为您阅读xml 文件的首选方式——可能是XDocumentXmlDocumentXmlReader

【讨论】:

  • “System.IO.Directory”不包含“EnumerateFiles”的定义
  • "使用 System.IO;"杰出的!!为什么更多的人不能给这个?试图找出人们在谈论什么会很烦人
  • @user001 因为通常 IDE 可以为您找到并添加此类内容 - 只需按 ctrl+。
  • @MarcGravell 通常哈哈 :(
  • 我认为最好在循环中使用 StringBuilder 来附加每个文件的内容。 sb.Append(File.ReadAllText(file));
【解决方案2】:
using System.IO;

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

【讨论】:

    【解决方案3】:
    using System.IO;
    
    //...
    
      string[] files;
    
      if (Directory.Exists(Path)) {
        files = Directory.GetFiles(Path, @"*.xml", SearchOption.TopDirectoryOnly);
        //...
    

    【讨论】:

      【解决方案4】:

      您可以使用DirectoryInfo.GetFiles 方法:

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

      【讨论】:

        【解决方案5】:

        如果您希望复制一个文件夹中的所有文本文件以合并并复制到另一个文件夹,您可以这样做来实现:

        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】:

          试试这个它对我有用..

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

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

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

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

          【讨论】:

            【解决方案7】:
                using System.IO;
                string[] arr=Directory.GetFiles("folderpath","*.Fileextension");
                  foreach(string file in arr)
                   {
            
                   }
            

            【讨论】:

            • 虽然此解决方案可能会回答 OP 的问题,但建议不要只编写纯代码答案,因为这可能对未来的用户没有太大帮助。稍微阐述一下。这个解决方案提供了什么?它将如何使 OP 受益?等
            • 我昨天才看到代码,但这不是复制粘贴
            • 我并不是在暗示你会复制/粘贴。我已经更新了我的评论。尽管如此,我的评论仍然成立。详细说明。
            猜你喜欢
            • 2011-07-22
            • 1970-01-01
            • 2010-12-23
            • 2013-08-10
            • 1970-01-01
            • 2020-07-24
            • 1970-01-01
            • 2020-06-28
            相关资源
            最近更新 更多