2016-03-02 122 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

相關問題