C# c-有没有办法获取逻辑驱动器中的文件列表(路径错误)?

C# c-有没有办法获取逻辑驱动器中的文件列表(路径错误)?,c#,.net,C#,.net,我正在为自己编写一个应用程序,用于备份我以前选择的文件!我选择要添加到列表中的逻辑驱动器,它应该获取路径中的文件列表,并执行我告诉它的其他操作: 我可以说我搜索了所有的网页!我尝试合并路径、获取driveinfo和。。。。。我尝试的最后一个代码是: foreach (var drivename in driveslist) { string[] files = Directory.GetFiles(drivename, "*.*"); } 编辑:驱动器列表包含: C E D Syst

我正在为自己编写一个应用程序,用于备份我以前选择的文件!我选择要添加到列表中的逻辑驱动器,它应该获取路径中的文件列表,并执行我告诉它的其他操作:

我可以说我搜索了所有的网页!我尝试合并路径、获取driveinfo和。。。。。我尝试的最后一个代码是:

foreach (var drivename in driveslist)
{
    string[] files = Directory.GetFiles(drivename, "*.*");
}
编辑:驱动器列表包含:

C
E
D
System.IO.DirectoryNotFoundException:'找不到路径'C:\E'的一部分。'


GetFiles似乎不明白这是一个要列出的驱动器

尝试确保driveslist包含类似{@C:\,@D:\}等内容

编辑: 或者,如果您无法控制上游列表,请执行以下操作:

foreach (var drivename in driveslist)
{
     string[] files = Directory.GetFiles($"{drivename}:\\", "*.*");
}
编辑2: 我很惊讶这不起作用。以下代码适用于我的机器:

class Program
{
    static void Main(string[] args)
    {
        var driveslist = new[] {"C"};

        foreach (var drivename in driveslist)
        {
            string[] files = Directory.GetFiles($"{drivename}:\\", "*.*");
            foreach (var file in files)
            {
                Console.WriteLine(file);
            }
        }
        Console.ReadLine();
    }
}

GetFiles似乎不明白这是一个要列出的驱动器

尝试确保driveslist包含类似{@C:\,@D:\}等内容

编辑: 或者,如果您无法控制上游列表,请执行以下操作:

foreach (var drivename in driveslist)
{
     string[] files = Directory.GetFiles($"{drivename}:\\", "*.*");
}
编辑2: 我很惊讶这不起作用。以下代码适用于我的机器:

class Program
{
    static void Main(string[] args)
    {
        var driveslist = new[] {"C"};

        foreach (var drivename in driveslist)
        {
            string[] files = Directory.GetFiles($"{drivename}:\\", "*.*");
            foreach (var file in files)
            {
                Console.WriteLine(file);
            }
        }
        Console.ReadLine();
    }
}
听起来好像driveslist包含字符串“C:\E”,这不是有效的路径

我刚才试过:

string[] files = Directory.GetFiles("c:\\", "*.*");
它是有效的。我想你是在责怪GetFiles,但问题其实在路径上

如果只要求e而不使用冒号和斜杠,它会认为您需要当前目录中名为e的子文件夹。

听起来好像driveslist包含字符串“C:\e”,这不是有效路径

我刚才试过:

string[] files = Directory.GetFiles("c:\\", "*.*");
它是有效的。我想你是在责怪GetFiles,但问题其实在路径上



如果您只要求e而不使用冒号和斜杠,它会认为您需要当前目录中名为e的子文件夹。

如何选择驱动器?调试并显示驱动器列表中的内容。我使用电报机器人在其中选择要备份的驱动器!驱动器列表如下所示:您必须使用完整路径,而不仅仅是驱动器名称。例如:目录。GetFiles@C:\;文件将及时添加、删除等。您能告诉我们驱动器列表中的内容吗?您如何选择驱动器?调试并显示驱动器列表中的内容。我使用电报机器人在其中选择要备份的驱动器!驱动器列表如下所示:您必须使用完整路径,而不仅仅是驱动器名称。例如:目录。GetFiles@C:\;文件将及时添加、删除等。您能告诉我们驱动器列表中的内容吗?我想获取逻辑驱动器的文件,它从路径C:\idk开始执行操作!如何组合路径?我想也许这就是问题所在!我有驱动器号,例如=>CI已尝试!不支持给定路径的格式。能否发布更新后的System.IO.DirectoryNotFoundException文本?请尝试我的完整示例我想获取逻辑驱动器的文件,它从路径C:\idk开始执行操作!如何组合路径?我想也许这就是问题所在!我有驱动器号,例如=>CI已尝试!不支持给定路径的格式。能否发布更新后的System.IO.DirectoryNotFoundException文本?请尝试我的完整示例错误如下,因为它找不到E:\\的路径,并且类似于C:\\这没有意义。如果它找不到e,它会说找不到路径“e:\\”的一部分,请给我们看驱动器的内容。我还是这么认为的-请看我回答的最后一行:如果你只要求没有冒号和斜杠的e,它会认为你需要当前目录中名为e的子文件夹。错误是这样的,因为它找不到e:\\的路径,它像C:\\t那样没有道理。如果它找不到e,它会说找不到路径“e:\\”的一部分,请给我们看驱动器的内容。我仍然这么认为-请看我答案的最后一行:如果你只要求e,而不带冒号和斜杠,它会认为你需要当前目录中名为e的子文件夹。