Дано такое задание: Разработать консольное приложение "Поиск последнего созданного файла с заданным расширением":
Входные данные: путь к папке и расширение файла
Выходные данные: самый последний по дате создания файл заданного расширения. Если в директории несколько файлов с заданным расширением, то результатом должен быть самый "свежий" файл + список файлов дата создания которых отличается от этого файла не более чем на 10 секунд.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FileSearch
{
public class Program
{
public void Main(string[] args)
{
Console.WriteLine("Путь:");
string path = Console.ReadLine();
if (Directory.Exists(path))
{
Console.WriteLine("Введите расширение");
string type = Console.ReadLine();
var result = Directory.EnumerateFiles(path, type);
foreach (var m in result)
Console.WriteLine(m);
}
else
{
Console.WriteLine("No directory!");
}
new DirectoryInfo(path).GetFiles().OrderByDescending(o => o.LastWriteTime).FirstOrDefault();
}
}
}
new DirectoryInfo(path).GetFiles().OrderByDescending(o => o.LastWriteTime).FirstOrDefault()
2.Как прописать выходные данные с условием (понимаю,что скорее всего через конструктор if..else,но как именно,хотелось бы узнать
Если в директории несколько файлов с заданным расширением, то результатом должен быть самый "свежий" файл + список файлов дата создания которых отличается от этого файла не более чем на 10 секунд.
Я увидел, что вам уже ответили, но я всё же решил сделать полный ответ. Вот я написал короткий код, который хорошо работает (если что, я сортировал их не по дате изменения, а по дате создания):
using System;
using System.IO;
using System.Linq;
namespace LastCreatedFileSearcher
{
class Program
{
static void Main(string[] args)
{
string filePath, fileType;
Console.Write("Путь: ");
filePath = Console.ReadLine();
if (Directory.Exists(filePath))
{
Console.Write("Расширение: ");
fileType = Console.ReadLine();
var foundFiles = new DirectoryInfo($"{filePath}").GetFiles($"*.{fileType}");
if (foundFiles.Length > 0)
{
foundFiles = foundFiles.OrderByDescending(file => file.CreationTime).ToArray();
var lastCreatedFile = foundFiles.First();
foundFiles = foundFiles.TakeWhile(file => lastCreatedFile.CreationTime - file.CreationTime <= new TimeSpan(0, 0, 10)).ToArray();
for (int i = 0; i < foundFiles.Length; i++)
{
if (i == 1) Console.WriteLine("Файлы, созданные в ближайшие 10 сек после последнего созданного:");
Console.WriteLine($"{i+1}. Имя файла: {foundFiles[i].Name} | Дата создания: {foundFiles[i].CreationTime}");
}
}
else
{
Console.WriteLine($"Файлов с расширением '.{fileType}' в директории не существует");
}
}
else
{
Console.WriteLine("Директории не существует");
}
Console.ReadKey();
}
}
}
Я не буду повторяться про GetFiles(string) и т.д., а укажу на некоторые другие маленькие ошибки в стиле кода. Они не так важны, тем более раз вы только начинаете изучать C#, однако в будующем эти советы вам, возможно, пригодятся (если кто то не согласен, поправьте меня):
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я методом Find заменяю некоторые слова, потом сохраняю ворд как пдф, но мне так надо сделать 100 разИ что бы не сохранять изменения а получить...
Не знаю точно, что с памятью, может утечка, может это нормально, хотел узнать, кто в этом понимает, чтобы избежать такого в дальнейшем
На сервере в БД хранятся файлыНеобходимо отправлять эти файлы на почту