많은 파일이 포함 된 폴더가 있습니다. 생성 날짜 / 시간별로 정렬 된 디렉토리에서 파일 이름을 얻는 쉬운 방법이 있습니까?
을 사용하면 Directory.GetFiles()
파일 이름별로 정렬 된 파일이 반환됩니다.
많은 파일이 포함 된 폴더가 있습니다. 생성 날짜 / 시간별로 정렬 된 디렉토리에서 파일 이름을 얻는 쉬운 방법이 있습니까?
을 사용하면 Directory.GetFiles()
파일 이름별로 정렬 된 파일이 반환됩니다.
답변:
이것은 당신을 위해 일할 수 있습니다.
using System.Linq;
DirectoryInfo info = new DirectoryInfo("PATH_TO_DIRECTORY_HERE");
FileInfo[] files = info.GetFiles().OrderBy(p => p.CreationTime).ToArray();
foreach (FileInfo file in files)
{
// DO Something...
}
@jing : "DirectoryInfo 솔루션은 이것보다 훨씬 빠릅니다 (특히 네트워크 경로의 경우)"
나는 이것을 확인할 수 없다. Directory.GetFiles가 파일 시스템 또는 네트워크 캐시를 트리거하는 것처럼 보입니다. 첫 번째 요청은 시간이 걸리지 만 새 파일이 추가 된 경우에도 다음 요청은 훨씬 빠릅니다. 내 테스트에서 동일한 패턴을 가진 Directory.getfiles 및 info.GetFiles를 수행했으며 둘 다 동일하게 실행됩니다.
GetFiles done 437834 in00:00:20.4812480
process files done 437834 in00:00:00.9300573
GetFiles by Dirinfo(2) done 437834 in00:00:20.7412646
DirectoryInfo dirinfo = new DirectoryInfo(strMainPath);
String[] exts = new string[] { "*.jpeg", "*.jpg", "*.gif", "*.tiff", "*.bmp","*.png", "*.JPEG", "*.JPG", "*.GIF", "*.TIFF", "*.BMP","*.PNG" };
ArrayList files = new ArrayList();
foreach (string ext in exts)
files.AddRange(dirinfo.GetFiles(ext).OrderBy(x => x.CreationTime).ToArray());