Я использую два DateTimePickers, чтобы указать диапазон дат, затем я использую CheckedListBox, чтобы указать некоторые строки для имен файлов с подстановочными знаками для перечисления в подкаталоге каждый день в пределах пути переменной среды системы. Я хочу скопировать из этого источника в пункт назначения с помощью FileInfo.Copy.Неисправность, указывающая имя файла назначения для использования в FileInfo.Copy пример из MSDN
У меня есть код, который уже создает необходимые каталоги. Но у меня возникли проблемы с указанием имен файлов назначения - они вообще не указываются с тем, как я это написал.
Я думал об использовании регулярных выражений, но после некоторого рытья я нашел this MSDN article, который, похоже, уже делает то, что я хочу. Я думаю, мне нужно изменить свой код, чтобы использовать его. Я мог бы использовать некоторую помощь, соответствующую тому, что у меня уже есть, в том, что показывает MSDN в своем примере.
Я был в этой части своей программы уже месяц, что привело меня к изучению совсем немного о C#, параллельном программировании, async, лямбда-выражениях, работниках фона и т. Д. То, что кажется простым, стало большая щель для меня. Для этого вопроса мне просто нужно подтолкнуть в правильном направлении, и я буду очень благодарен!
Вот мой код, как он стоит:
private async void ProcessFiles()
{
// create a list of topics
var topics = topicsBox.CheckedItems.Cast<string>().ToList();
// create a list of source directories based on date range
var directories = new List<string>();
var folders = new List<string>();
for (DateTime date = dateTimePicker1.Value.Date;
date.Date <= dateTimePicker2.Value.Date;
date = date.AddDays(1))
{
directories.Add(_tracePath + @"\" + date.ToString("yyyy-MM-dd") + @"\");
folders.Add(@"\" + date.ToString("yyyy-MM-dd") + @"\");
}
// create a list of source files to copy and destination
// revise based on https://msdn.microsoft.com/en-us/library/kztecsys.aspx?f=255&MSPPError=-2147217396
foreach (var path in directories)
{
var path1 = path;
try
{
foreach (var files2 in folders)
{
// create the target directory
var destPath = textBox1.Text + @"\" + textBox4.Text + files2;
Console.WriteLine("Target directory is {0}", destPath);
Console.WriteLine("Destination filename is {0}", files2);
foreach (var files in topics)
{
foreach (string sourcePath in Directory.EnumerateFiles(path1, files + "*.*", SearchOption.AllDirectories))
{
// copy the files to the temp folder asynchronously
Console.WriteLine("Copy {0} to {1}", sourcePath, destPath);
Directory.CreateDirectory(sourcePath.Replace(sourcePath, destPath));
}
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
«Упростить мой код» не является допустимым и позволило типа здесь. Вы должны задавать только технические вопросы. Попробуйте прочитать другие вопросы людей, чтобы увидеть, что такое и не разрешено. –
Я обновлю название. – Dshiz
@JK. «Помогу, я застрял, я не хочу нарушать то, что сейчас работаю». хватает? – Dshiz