특정 폴더 내의 모든 파일을 읽는 방법


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

답변:


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

위의 내용은 .NET 4.0 기능을 사용합니다. 이전 버전의 교체 EnumerateFiles와 함께 GetFiles). 또한, 교체 File.ReadAllText아마도 - xml 파일을 읽는 선호하는 방법으로 XDocument, XmlDocument또는 XmlReader.


1
'System.IO.Directory가' 'EnumerateFiles'에 대한 정의가 포함되어 있지 않습니다

4
"System.IO 사용" 훌륭한!! 왜 더 많은 사람들이 이것을 줄 수 없습니까? 사람들이 말하는 내용을 찾으려고하는 것은 매우 성 가실 수 있습니다.
user001

1
@ user001은 일반적으로 IDE가 이러한 항목을 찾아 추가 할 수 있기 때문에 Ctrl +를 누르기 만하면됩니다.
Marc Gravell

1
@MarcGravell 하하 보통 :(
user001

루프 내에서 StringBuilder를 사용하여 모든 파일의 내용을 추가하는 것이 더 낫다고 생각합니다. sb.Append (File.ReadAllText (파일));
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);
    //...

7

이거 해봐 ..

구문은 GetFiles(string path, string searchPattern);

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

이 코드는 App_Data폴더 내의 모든 파일을 반환 합니다.

두 번째 매개 변수 입니다. 첫 번째 *는 파일 이름이고 두 번째는 파일 형식 또는 파일 확장자 (* .png-.png 형식의 모든 파일 이름)에 대한 파일 확장자가있는 searchPattern을 나타냅니다.



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

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

       }

1
이 솔루션이 OP의 문제에 답할 수는 있지만, 향후 사용자에게는 그다지 도움이되지 않을 수 있으므로 코드 전용 답변 만 작성하지 않는 것이 좋습니다. 조금 정교하게. 이 솔루션은 무엇을 제공합니까? OP에 어떤 이점이 있습니까? 등
Geoff James

나는 어제 코드를 볼 수 있지만 그 복사 붙여 넣기가 아니라고
라훌 sahu

나는 당신이 복사 / 붙여 넣기했다는 것을 암시하지 않았습니다. 내 댓글을 업데이트했습니다. 그래도 내 의견은 여전히 ​​유효합니다. 정교한.
Geoff James
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.