找不到文件时C#else语句无法运行

时间:2018-06-19 15:45:08

标签: c# io

编辑: 感谢用户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();
            }
        }

我要完成的工作是通过Desktop目录找到名为“ delete.txt”的文件,并在用户输入“ search.system”时将其删除。然后控制台将告诉您该文件已被删除。如果找不到该文件,则会通过控制台将“找不到该文件”回传给您。如果发生错误,它将捕获并说“搜索遇到错误”

我也想对这段代码混乱和/或我尝试完成的操作完全错误表示抱歉。我是C#的新手,也是一般编码的新手。

2 个答案:

答案 0 :(得分:2)

您可能想输入if语句来检查fileList的长度是否为> 0。如果文件长度为零,则找不到文件。否则,您可以继续删除文件。

此外,不要气as作为新的编码器。在使用GetFiles()方法的行上设置断点,然后将步骤(F11)移至下一行。将光标悬停在fileList变量上,查看数组中的项目数是否为零。

System.IO.Directory.GetFiles()

答案 1 :(得分:1)

看起来您只是在按名称查找特定文件,如果存在则将其删除。您可以这样做来简化代码:

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();
    }
}