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 に答える