-1

ルート フォルダーの下の各フォルダーから、最近作成されたファイルを見つける必要があります。次のコードは、ルート フォルダーからすべてのファイルを返します。

list<string> capturesList = SafeFileEnumerator.EnumerateFiles(pathToSearch, "*.pcap", SearchOption.AllDirectories).ToList();

クラスSafeFileEnumeratorは、権限のある場所のみを検索します。

public static class SafeFileEnumerator
{
    public static IEnumerable<string> EnumerateDirectories(string parentDirectory, string searchPattern, SearchOption searchOpt)
    {
        try
        {
            var directories = Enumerable.Empty<string>();
            if (searchOpt == SearchOption.AllDirectories)
            {
                directories = Directory.EnumerateDirectories(parentDirectory).SelectMany(x => EnumerateDirectories(x, searchPattern, searchOpt));
            }
            return directories.Concat(Directory.EnumerateDirectories(parentDirectory, searchPattern));
        }
        catch (UnauthorizedAccessException)
        {
            return Enumerable.Empty<string>();
        }
    }

    public static IEnumerable<string> EnumerateFiles(string path, string searchPattern, SearchOption searchOpt)
    {
        try
        {
            var dirFiles = Enumerable.Empty<string>();
            if (searchOpt == SearchOption.AllDirectories)
            {
                dirFiles = Directory.EnumerateDirectories(path).SelectMany(x => EnumerateFiles(x, searchPattern, searchOpt));
            }

            return dirFiles.Concat(Directory.EnumerateFiles(path, searchPattern));
        }
        catch (UnauthorizedAccessException)
        {
            return Enumerable.Empty<string>();
        }
    }
}
4

1 に答える 1

2

ルートフォルダーの下の各フォルダーから最近作成されたファイルを取得するには、次のように指定できます。

if(Directory.Exists("YourPath"))
foreach (string _tempFiles in Directory.GetDirectories("YourPath","*", SearchOption.AllDirectories)
                       .Select(directory => Directory.GetFiles(directory, "*.*" )
                       .OrderByDescending(File.GetLastWriteTime)
                       .FirstOrDefault()))
{
 MessageBox.Show(_tempFiles);
}

このコードは、ルートフォルダー内のフォルダーのみをチェックします

于 2013-01-17T15:06:27.603 に答える