特定のフォルダ内のすべてのファイルを読み取る方法


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
オデッド

回答:


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

上記は.NET 4.0機能を使用していることに注意してください。以前のバージョンEnumerateFilesではGetFiles)に置き換えます。また、File.ReadAllTextXMLファイルの読み取りに使用する方法(おそらくXDocumentXmlDocumentまたは)に置き換えてくださいXmlReader


1
'System.IO.Directory'には 'EnumerateFiles'の定義が含まれていません
ram

4
「System.IOを使用して」鮮やかさ!!より多くの人々がこれを与えられないのはなぜですか?人々が話していることを見つけようとするのはとてもうんざりする
かもしれません

1
@ user001は、通常IDEがそのようなものを見つけて追加できるためです。Ctrl+を押すだけです。
Marc Gravell

1
@MarcGravell haha​​通常:(
user001 2015年

すべてのファイルのコンテンツを追加するには、ループ内でStringBuilderを使用する方が良いと思います。sb.Append(File.ReadAllText(file));
e0x3 2017

25
using System.IO;

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



6

1つのフォルダーにすべてのテキストファイルをコピーして別のフォルダーにマージおよびコピーする場合は、次のようにしてこれを行うことができます。

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フォルダー内のすべてのファイルを返します。

2番目のパラメータファイル拡張子のあるsearchPatternを示します。最初の*はファイル名、2番目はファイルの形式または(* .png-.png形式のファイル名などのファイル拡張子)です。


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

       }

1
このソリューションはOPの問題を解決する可能性がありますが、これは将来のユーザーにとってあまり役に立たない可能性があるため、コードのみの回答を作成しないことをお勧めします。少し詳しく説明します。このソリューションは何を提供しますか?OPにどのようなメリットがありますか?など
ジェフジェームズ

昨日のコードを見たばかりですが、それはコピーペーストではありません
Rahul sahu

私はあなたがコピー/貼り付けをするつもりだったことを意味していませんでした。コメントを更新しました。それでも、私のコメントはまだ残っています。精巧。
ジェフジェームズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.