C#复制具有指定日期和时间范围的文件

时间:2019-03-02 12:14:23

标签: c# datetime directory-structure

在Visual C#中:

我希望将指定日期和时间范围的文件列表从一个文件夹复制到另一个文件夹。我一直在获取所有文件,而不仅仅是我想要的文件。

例如:

2019年2月20日凌晨2点至2019年3月2日凌晨1点(基于修改的日期时间)

复制

D:\Data\SubFolder1\SubFolder2\SubFolder3\\*.log

E:\MyLogs\D\Data\SubFolder1\SubFolder2\SubFolder3\

我应该看什么功能或库?

2 个答案:

答案 0 :(得分:2)

您可以尝试以下代码

导入System.IO以使用其中的DirectoryInfo

我也正在导入System.Linq以使用其中的Where方法。

假设您的目录路径位于变量yourDirectoryPath

// Specify the directory you want to use
DirectoryInfo directory = new DirectoryInfo(yourDirectoryPath);
// Check if your directory exists and only then proceed further
if (directory.Exists){
    //You would be having your fromdate and toDate in two variables like fromDate, toDate
    // files variable below will have all the files that has been lastWritten between the given range
    var files = directory.GetFiles()
                 .Where(file=>file.LastWriteTime >= fromDate && file.LastWriteTime <= toDate);
 }

现在,您可以使用现有代码(如果没有请告诉我)将所有文件从文件夹复制到目标位置。

答案 1 :(得分:0)

您首先需要过滤在指定时间段内修改/创建的文件。您可以按照以下步骤进行操作。

var directory = new DirectoryInfo(sourceFolder);
var listOfFilesInSpecifiedPeriod = directory.GetFiles("SubFolder3*.log")
                    .Where(file=>file.LastWriteTime >= fromDate && file.LastWriteTime <= endDate);

然后,您可以遍历结果以将其复制到目标文件夹。

  foreach(var file in listOfFilesInSpecifiedPeriod)
  {
    File.Copy(file.FullName,Path.Combine(destinationFolder,file.Name));
  }

请注意,要使代码完整,您需要添加检查以确保源文件夹和目标文件夹存在。我把它留给你完成。