我使用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'”。
如果无法删除整个文件夹,我希望删除操作不会删除文件夹中的任何文件。
答案 0 :(得分:1)
尝试使用.NET Transactional File Manager
TxFileManager fileMgr = new TxFileManager();
using (TransactionScope scope1 = new TransactionScope())
{
fileMgr.DeleteDirectory(path);
scope1.Complete();
}