1

我编写此代码以清空一些我经常删除的文件,例如 Windows 中的临时文件。几个朋友可能希望使用相同的应用程序,而我正在研究处理未找到文件异常的最佳方法。

如何最好地处理这个问题以供多个用户使用?

public void Deletefiles()
    {
        try
        {                
            string[] DirectoryList = Directory.GetDirectories("C:\\Users\\user\\Desktop\\1");
            string[] FileList = Directory.GetFiles("C:\\Users\\user\\Desktop\\1");

            foreach (string x in DirectoryList)
            {
                Directory.Delete(x, true);
                FoldersCounter++;
            }

            foreach (string y in FileList)
            {
                File.Delete(y);
                FilesCounter++;
            }

            MessageBox.Show("Done...\nFiles deleted - " + FileList.Length + "\nDirectories deleted - " + DirectoryList.Length + "\n" + FilesCounter + "\n", "message", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

        catch (Exception z)
        {
            if (z.Message.Contains("NotFound"))
            {
                MessageBox.Show("File Not Found");
            }
            else
            {
                throw (z);
            }
            //throw new FileNotFoundException();
        }
    }
4

1 回答 1

0

尽可能少地修改你的代码,你可以简单地将你的Delete调用包装在一个 try/catch 中:

foreach (string x in DirectoryList)
{
    try {
        Directory.Delete(x, true);
    }
    catch (DirectoryNotFoundException e)
    {
        // do something, or not...
    }
    FoldersCounter++;
}

foreach (string y in FileList)
{
    try
    {
        File.Delete(y);
    }
    catch (FileNotFoundException e)
    {
        // do something, or not...
    }
    FilesCounter++;
}

删除顶级 try/catch 并让foreach语句循环通过 -- trying 和catching 任何异常。

您不一定需要提醒用户找不到文件。它存在它将被删除,因此它不存在的事实并不会真正影响程序的结果。

这不是对资源最友好的方法,但它是一个足够简单的应用程序,不会引起问题。

于 2012-12-13T22:50:56.757 回答