C # Копировать файл с указанием даты и времени - PullRequest
0 голосов
/ 02 марта 2019

В Visual C #:

Я хочу скопировать список файлов из определенного диапазона даты и времени из одной папки в другую.Я продолжаю получать все файлы, а не только те файлы, которые мне нужны.

Например:

20 февраля 2019 г. 2:00 ко 2 марта 2019 г. 1:00 (время изменения базы данных)

Копировать

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

до

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

На какую функцию или библиотеку я должен смотреть?

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Сначала необходимо отфильтровать файлы, которые были изменены / созданы в течение указанного периода.Вы можете сделать это следующим образом.

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));
  }

Обратите внимание, что для завершения кода вам необходимодобавить проверки, чтобы убедиться, что исходная и целевая папки существуют.Я оставляю это вам для завершения.

0 голосов
/ 02 марта 2019

Вы можете попробовать код, как показано ниже

Импорт 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);
 }

Теперь вы можете использовать свой существующий код (дайте мне знать, если вы этого не сделали), чтобы скопировать все файлы из папкидо места назначения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...