2014-12-06 3 views
-5

Мне нужно удалить файл, если существует другой файл.Если файл существует, удалите другой файл

Directory.GetFiles(dirName) 
    .Select(f => new FileInfo(f)) 
    .Where(f => f.exists) 
    .ToList() 
    .ForEach(f => f.Delete());  

Это рабочий код для автоматического удаления файлов, но мне нужно изменить его, чтобы удалить другой файл в другом каталоге.

Файл в каталоге2 имеет немного другое имя. Имя файла в каталоге1 = MyFileName() , но имя файла в каталоге2 = MyFileName

E.g. В "C: // folder123" существует файл "File123()" и мне нужно его обнаружить и удалить файл в "C: // Мои документы/folder456" имени "File123"

// редактировать

Я написал кое-что, и я думаю, что это должно работать, но я должен выяснить проблему с ApplicationPool, чтобы проверить:

string path = "directory2"; 
     Directory.GetFiles("directory1") 
     .Where(f => f.Contains("()") == true) 
     .Select(f => f.TrimEnd(')', '(')) 
     .ToList(); 
     File.Delete(path);  
+2

Проверьте другие методы, доступные в классе «Файл». Подсказка: Обратный «Существует» и «Файл», и вы почти там ... –

+0

Лучший способ - создать картографическую структуру данных в базе данных или где-то еще и выполнить ту же операцию. –

+0

Я улучшил вопрос. –

ответ

0

Что об этом решении?

string sourcePath = "c:\\folder123\file123()"; 
string secondPath = "c:\\documents\\folder456"; 

if(File.Exists(sourcePath)) 
{ 
    FileInfo sInfo = new FileInfo(sourcePath); 
    string dFilePath = Path.Combine(secondPath, sInfo.Name.Replace("()","")); 
    if(File.Exists(dFilePath)) 
     File.Delete(dFilePath); 
} 

Я пишу его на своем iPad, поэтому надеюсь, что это правильно. Может быть, строка "()" требует escape-символов.

+0

Спасибо за ответ! Я написал что-то подобное, и я думаю, что это должно сработать, но я должен выяснить проблему с аппликом, чтобы проверить его. Я новичок, поэтому я не установил свой компьютер должным образом, и некоторые приложения просто не работают, потому что у них нет полного доступа к некоторым папкам и т. Д. string path = "directory2"; Directory.GetFiles ("directory1") .Where (f => f.Contains ("()") == true) . Выберите (f => f.TrimEnd (')', '(')) .К списку(); Файл.Delete (путь); PS. Potěší vidět první odpověď od zrovna Čecha :) –

Смежные вопросы