계층이 깊은 폴더 내의 파일 검색은 EnumerateFiles 메소드가 빠르다!
4655 단어 .NETFrameworkC#.NET
소개
기업내의 파일 서버에는 다수의 폴더·서브폴더가 작성되고 있어, 개인의 PC내에도 폴더가 복잡하게 작성되고 있습니다.
.NET Framrwork에서는 하위 폴더의 파일도 열거해 준다. 는 메모리를 나름대로 소비합니다.
.NET Framework 4.0 이상을 응용 프로그램에서 사용하는 경우 IEnumerable 형식으로 반환하는 System.IO.Directory.GetFiles(path, pattern, System.IO.SearchOption.AllDirectories)을 사용하여 이전 약점을 해결할 수 있습니다.
샘플 코드
지정된 폴더(하위 폴더 포함)에서 크기가 0인 세 파일을 찾습니다.
using System;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var dtStart = DateTime.Now;
System.IO.Directory.GetFiles("\\\\fileserver\\shared", "*.*", System.IO.SearchOption.AllDirectories)
.Where(e => (new System.IO.FileInfo(e)).Length == 0)
.Where(e => { Console.WriteLine(e); return true; })
.Take(3).ToArray();
var dtEnd = DateTime.Now;
Console.WriteLine();
Console.WriteLine("処理時間は " + (dtEnd - dtStart).TotalSeconds.ToString() + "秒");
Console.Read();
}
}
}
결과 예
150GB 바이트 이상의 공유 폴더를 대상으로 EnumerateFiles 메서드로 검색한 결과 ...
System.IO.Directory.EnumerateFiles(path, pattern, System.IO.SearchOption.AllDirectories)
GetFiles 메서드를 사용하는 경우 ...
Reference
이 문제에 관하여(계층이 깊은 폴더 내의 파일 검색은 EnumerateFiles 메소드가 빠르다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/otagaisama-1/items/defebedf14b7e788751a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
지정된 폴더(하위 폴더 포함)에서 크기가 0인 세 파일을 찾습니다.
using System;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var dtStart = DateTime.Now;
System.IO.Directory.GetFiles("\\\\fileserver\\shared", "*.*", System.IO.SearchOption.AllDirectories)
.Where(e => (new System.IO.FileInfo(e)).Length == 0)
.Where(e => { Console.WriteLine(e); return true; })
.Take(3).ToArray();
var dtEnd = DateTime.Now;
Console.WriteLine();
Console.WriteLine("処理時間は " + (dtEnd - dtStart).TotalSeconds.ToString() + "秒");
Console.Read();
}
}
}
결과 예
150GB 바이트 이상의 공유 폴더를 대상으로 EnumerateFiles 메서드로 검색한 결과 ...
System.IO.Directory.EnumerateFiles(path, pattern, System.IO.SearchOption.AllDirectories)
GetFiles 메서드를 사용하는 경우 ...
Reference
이 문제에 관하여(계층이 깊은 폴더 내의 파일 검색은 EnumerateFiles 메소드가 빠르다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/otagaisama-1/items/defebedf14b7e788751a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)