我想一次只处理 X 个文件以进行以下无限循环。下面的代码一次给我所有文件,如何只获得 X 个文件?
while (true)
{
var files = new DirectoryInfo(@"path")
.GetFiles()
.OrderBy(p => p.LastWriteTimeUtc)
.ToList();
foreach (var f in files)
{
//do some processing
Console.WriteLine(f.Name);
f.Delete();
}
Thread.Sleep(5000);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用它们的组合来批量处理您的文件Skip() .Take(X)
Skip() :绕过序列中指定数量的元素,然后返回剩余的元素。
Take() :从序列的开头返回指定数量的连续元素。
批量处理文件,
var batchSize = 10; //Decide batch size I considered 10 files in a batch
var skipBatch = 0 //Skip count
while (true)
{
var files = new DirectoryInfo(@"path").GetFiles()
.OrderBy(p => p.LastWriteTimeUtc).ToList(); //store all files
var skipIntervals = skipBatch * batchSize;
//Exit condition from infinity loop
if(skipIntervals > files.Length)
break;
var filesInBatch = files.Skip(skipIntervals).Take(batchSize);
foreach (var f in filesInBatch)
{
//do some processing
Console.WriteLine(f.Name);
f.Delete();
}
Thread.Sleep(5000);
skipBatch++; //Increment skipBatch count by 1 as this batch is processed
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |