未找到文件时,C#else语句不运行

未找到文件时,C#else语句不运行,c#,io,C#,Io,编辑: 多亏了用户Chris Larabell,我的问题已经解决了,多亏了所有回复 我的代码出现的问题是,当所述文件不在桌面目录中时,控制台将关闭,并且不会转到else语句以了解文件不存在时发生的情况。但是,当文件存在时,控制台将完全正常工作,它只是else语句。 这是我正在使用的代码 if (inputDrive == "search.system") { try { string Desktop

编辑: 多亏了用户Chris Larabell,我的问题已经解决了,多亏了所有回复

我的代码出现的问题是,当所述文件不在桌面目录中时,控制台将关闭,并且不会转到else语句以了解文件不存在时发生的情况。但是,当文件存在时,控制台将完全正常工作,它只是else语句。 这是我正在使用的代码

if (inputDrive == "search.system")
        {
            try
            {
                string Desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
                string DeleteFile = @"delete.txt";
                string[] fileList = System.IO.Directory.GetFiles(Desktop, DeleteFile);
                foreach (string file in fileList)
                {
                    if (System.IO.File.Exists(file))
                    {
                        System.IO.File.Delete(file);
                        Console.WriteLine("File has been deleted");
                        Console.ReadLine();
                    }
                    else
                    {
                        Console.Write("File could not be found");
                        Console.ReadLine();
                    }
                }
            }
            catch (System.IO.FileNotFoundException)
            {
                Console.WriteLine("search has encountered an error");
                Console.ReadLine();
            }
        }
我试图完成的是通过桌面目录找到一个名为“delete.txt”的文件,并在用户进入“search.system”时将其删除。然后控制台会告诉您该文件已被删除。如果文件还没有找到,它会说“文件找不到”通过控制台返回给您。如果发生错误,它将转到catch并说“搜索遇到错误”


我还想说,如果这段代码很凌乱和/或这与我试图实现的完全错误,我很抱歉。我不熟悉C#,也不熟悉一般的编码。

您需要在if语句中添加一个
,以检查
文件列表的长度是否为
>0
。如果文件长度为零,则未找到该文件。否则,您可以继续删除该文件

另外,作为一个新的程序员,不要灰心。在使用
GetFiles()
方法的行上设置断点,并将步骤(F11)移到下一行。将光标悬停在
文件列表
变量上,查看数组中的项数是否为零


您可能希望放置一个
if
语句,以检查
文件列表的长度是否为
>0
。如果文件长度为零,则未找到该文件。否则,您可以继续删除该文件

另外,作为一个新的程序员,不要灰心。在使用
GetFiles()
方法的行上设置断点,并将步骤(F11)移到下一行。将光标悬停在
文件列表
变量上,查看数组中的项数是否为零


看起来您只是简单地按名称查找特定文件,并删除它(如果存在)。您可以通过以下方式简化代码:

if (inputDrive == "search.system")
{
    try
    {
        string Desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
        string DeleteFile = @"delete.txt";
        string filePath = System.IO.Path.Combine(Desktop, DeleteFile);

        if (System.IO.File.Exists(filePath))
        {
            System.IO.File.Delete(filePath);
            Console.WriteLine("File has been deleted");
            Console.ReadLine();
        }
        else
        {
            Console.Write("File could not be found");
            Console.ReadLine();
        }
    }
    catch (System.Exception ex)
    {
        Console.WriteLine($"search has encountered an error: {ex}");
        Console.ReadLine();
    }
}

看起来您只是简单地按名称查找特定文件,并删除它(如果存在)。您可以通过以下方式简化代码:

if (inputDrive == "search.system")
{
    try
    {
        string Desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
        string DeleteFile = @"delete.txt";
        string filePath = System.IO.Path.Combine(Desktop, DeleteFile);

        if (System.IO.File.Exists(filePath))
        {
            System.IO.File.Delete(filePath);
            Console.WriteLine("File has been deleted");
            Console.ReadLine();
        }
        else
        {
            Console.Write("File could not be found");
            Console.ReadLine();
        }
    }
    catch (System.Exception ex)
    {
        Console.WriteLine($"search has encountered an error: {ex}");
        Console.ReadLine();
    }
}

使用
F11
在go stepping中放置断点可能是
文件出现问题。删除
并引发异常,进入
catch
块,打印消息,然后关闭,因为没有任何东西使窗口保持打开状态。您需要学习。@Equalsk:如果我理解正确-问题是文件不存在-因此它不应该进入delete方法。请阅读操作内容;它返回存在的文件。如果文件不存在,
GetFiles
将不会返回它,并且您的
foreach
将永远不会被输入。如果您在调试器中运行代码,您会看到这一点。请注意,搜索单个文件最多只能返回一个文件,因此我不明白您的代码应该执行什么操作。使用
F11
在执行步骤中放置断点可能是
文件出错。删除
并引发异常,输入
catch
块,打印消息,然后关闭,因为没有任何东西使窗口保持打开状态。您需要学习。@Equalsk:如果我理解正确-问题是文件不存在-因此它不应该进入delete方法。请阅读操作内容;它返回存在的文件。如果文件不存在,
GetFiles
将不会返回它,并且您的
foreach
将永远不会被输入。如果您在调试器中运行代码,您会看到这一点。请注意,搜索单个文件最多只能返回一个文件,因此我不明白您的代码应该执行什么操作。您应该使用
Path.Combine
连接路径。顺便说一句,我不确定这整件事中有什么可能会抛出
FileNotFoundException
@nyrguds,好的方面。我已经更新了代码。我刚刚复制/粘贴了整个catch语句您应该使用
Path.combined
来连接路径。顺便说一句,我不确定这整件事中有什么可能会抛出
FileNotFoundException
@nyrguds,好的方面。我已经更新了代码。我刚刚复制/粘贴了整个catch语句