简体   繁体   English

如何将目录中最早的10个文件移动到另一个目录

[英]How to move the oldest 10 files in a directory to another directory

I have a C# script that is currently moving files between two directories. 我有一个C#脚本,当前正在两个目录之间移动文件。 It moves 10 files at a time. 它一次移动10个文件。 The problem is that it is grabbing the 10 files by file name. 问题在于它正在按文件名抓取10个文件。 I want it to grab the oldest 10 files each time it runs. 我希望它每次运行时都能捕获最早的10个文件。 How can I do that? 我怎样才能做到这一点?

Currently, my script looks like this: 目前,我的脚本如下所示:

string[] dirsSourceDirectory = System.IO.Directory.GetDirectories(sourceDirectory);
string[] filesSourceDirectory = System.IO.Directory.GetFiles(sourceDirectory);
string[] dirsDestinationDirectory = System.IO.Directory.GetDirectories(destinationDirectory);
string[] filesDestinationDirectory = System.IO.Directory.GetFiles(destinationDirectory);
int filecount = Directory.GetFiles(destinationDirectory, "*.TRN", SearchOption.TopDirectoryOnly).Length;

for (int i = 1; i <= 10; i++)
    {
       FileInfo[] rgfiles = di.GetFiles();
       rgfiles[0].MoveTo(System.IO.Path.Combine(destinationDirectory, rgfiles[0].Name));
    }

Thanks! 谢谢!

var filesToMove = di
  .GetFiles()
  .OrderBy(f => f.CreationTime)
  .Take(10)
  .ToArray();

foreach (var rgFile in filesToMove)
{
   rgfile.MoveTo(System.IO.Path.Combine(destinationDirectory, rgfile.Name));
}

Use LINQ to get the array of files, ordered from oldest to newest, like this: 使用LINQ获取从最早到最新的文件数组,如下所示:

var fileInfoArray = di.GetFiles().OrderBy(fi => fi.CreationTime).Take(10).ToArray();

Then you can loop through the files: 然后,您可以循环浏览文件:

foreach(var file in fileInfoArray)
{
     file.MoveTo(System.IO.Path.Combine(destinationDirectory, file.Name));
}

您可以简单地使用CreationTime函数: http : //msdn.microsoft.com/zh-cn/library/system.io.file.getcreationtime.aspx

尝试一些linq

List<string> slist = Directory.GetFiles(@"c:\temp").OrderBy(fn => File.GetCreationTime(fn)).ToList();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM