Directory.Delete(path,true)删除所有文件和子目录,但抛出异常

本文关键字:文件 子目录 抛出异常 删除 Delete path true Directory | 更新日期: 2023-09-27 18:11:27

我使用directory. delete (path,true)方法来删除目录。在删除之前,我用这种方法检查文件夹是否可以删除:

private bool FileCanDelete(string path)
    {
        try
        {
            //if this does not throw exception then the file is not use by another program
            using (FileStream fileStream = File.OpenWrite(path))
            {
                if (fileStream == null)
                    return false;
            }
            return true;
        }
        catch (UnauthorizedAccessException uaex)
        {
            throw uaex;
        }
        catch
        {
            return false;
        }
    }

如果返回结果为true,则调用delete方法。我可以看到所有的文件和子目录都已经被删除了,但是该方法抛出了一个异常,"进程不能访问文件'xxxxxxx'"。

如果不能删除整个文件夹,我希望删除操作不删除文件夹中的任何文件。

Directory.Delete(path,true)删除所有文件和子目录,但抛出异常

尝试使用。net事务文件管理器

TxFileManager fileMgr = new TxFileManager();
using (TransactionScope scope1 = new TransactionScope())
{
    fileMgr.DeleteDirectory(path);
    scope1.Complete();
}