2014-12-06 57 views
-5

当其他文件存在时,我需要删除文件。如果文件存在删除另一个文件

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

这是工作的代码来自动删除文件,但我需要对其进行修改,删除在其他目录中的其他文件。

directory2中的文件名称略有不同。 directory1中的文件名= MyFileName() 但是directory2中的文件名= MyFileName

例如,在“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

检查'File'类中可用的其他方法。提示:反向“存在”和“文件”,你几乎在那里...... – 2014-12-06 14:01:37

+0

最好的方法是在数据库或其他地方创建映射数据结构并执行相同的操作。 – 2014-12-06 14:02:59

+0

我改进了这个问题。 – 2014-12-06 14:56:47

回答

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上,所以我希望它是正确的。也许字符串“()”需要转义字符。

+0

谢谢你的回答! 我写了类似的东西,我认为它应该可以工作,但我必须找出applicationpool的问题来测试它。我是新手,所以我还没有正确设置我的电脑,有些应用程序只是因为他们没有完全访问某些文件夹等而无法工作。 string path =“directory2”; (f => f.Contains(“()”)== true) .Select(f => f.TrimEnd(')','(')) .ToList(); File.Delete(path); PS。 Potěšívidětprvníodpověďod zrovnaČecha:) – 2014-12-07 02:47:22

相关问题