Ответ 1
Попробуйте следующее:
var todayFiles = Directory.GetFiles("path_to_directory")
.Where(x => new FileInfo(x).CreationTime.Date == DateTime.Today.Date);
В .NET Directory.GetFiles есть хорошая функция, она проста в использовании, когда мне нужно получить все файлы из каталога.
Directory.GetFiles("c:\\Files")
Но как (какой шаблон) я могу использовать для получения только тех файлов, которые создали время, если есть много файлов с разным временем создания?
Спасибо!
Попробуйте следующее:
var todayFiles = Directory.GetFiles("path_to_directory")
.Where(x => new FileInfo(x).CreationTime.Date == DateTime.Today.Date);
Для производительности, особенно если поиск в каталоге, вероятно, будет большим, использование Directory.EnumerateFiles()
, которое лениво перечисляет по пути поиска, предпочтительнее Directory.GetFiles()
, которое с нетерпением перечисляет путь поиска, собирая все совпадения перед фильтрованием:
DateTime today = DateTime.Now.Date ;
FileInfo[] todaysFiles = new DirectoryInfo(@"c:\foo\bar")
.EnumerateFiles()
.Select( x => {
x.Refresh();
return x;
})
.Where( x => x.CreationTime.Date == today || x.LastWriteTime == today )
.ToArray()
;
Обратите внимание, что свойства FileSystemInfo
и его подтипы могут быть (и будут) кэшированы, поэтому они не обязательно отражают текущую реальность на земле. Следовательно, вызов Refresh()
для обеспечения правильности данных.
Вам нужно получить директорию для файла
public List<String> getTodaysFiles(String folderPath)
{
List<String> todaysFiles = new List<String>();
foreach (String file in Directory.GetFiles(folderPath))
{
DirectoryInfo di = new DirectoryInfo(file);
if (di.CreationTime.ToShortDateString().Equals(DateTime.Now.ToShortDateString()))
todaysFiles.Add(file);
}
return todaysFiles;
}
Вы можете использовать этот код:
var directory = new DirectoryInfo("C:\\MyDirectory");
var myFile = (from f in directory.GetFiles()
orderby f.LastWriteTime descending
select f).First();
// or...
var myFile = directory.GetFiles()
.OrderByDescending(f => f.LastWriteTime)
.First();
см. здесь: Как найти последний файл в каталоге с помощью .NET и без цикла?
используя System.Linq;
DirectoryInfo info = new DirectoryInfo("");
FileInfo[] files = info.GetFiles().OrderBy(p => p.CreationTime).ToArray();
foreach (FileInfo file in files)
{
// DO Something...
}
если вы хотите разбить его на определенную дату, вы можете попробовать это с помощью фильтра
var files = from c in directoryInfo.GetFiles()
where c.CreationTime >dateFilter
select c;
Вы должны пройти через это:
var loc = new DirectoryInfo("C:\\");
var fileList = loc.GetFiles().Where(x => x.CreationTime.ToString("dd/MM/yyyy") == currentDate);
foreach (FileInfo fileItem in fileList)
{
//Process the file
}