编辑: 感谢用户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#的新手,也是一般编码的新手。
答案 0 :(得分:2)
您可能想输入if
语句来检查fileList
的长度是否为> 0
。如果文件长度为零,则找不到文件。否则,您可以继续删除文件。
此外,不要气as作为新的编码器。在使用GetFiles()
方法的行上设置断点,然后将步骤(F11)移至下一行。将光标悬停在fileList
变量上,查看数组中的项目数是否为零。
答案 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();
}
}