C# 删除文件和文件夹 遍历文件和文件夹
在实践中发现1个文件夹下面可能有只读的文件和只读的文件夹。那么就需要通过层层遍历的方法取消每个文件夹里文件的只读属性然后删除。然后打开子文件夹取得里面的文件和文件夹,再取消每个文件夹里文件的只读属性然后删除。
//刪除指定文件和文件夾
public static bool DelFileAndDir(string sDet,ref string sErrMsg)
{
string sDelDir = "";
DirectoryInfo DirInfo;
ArrayList list;
try
{ //假设要删除的是和应用程序放在一起的1个文件夹及其子文件夹和文件
sDelDir = “C:\应用程序\新建文件夹”;
Debug.WriteLine(sDelDir); //下載的文件的詳細路徑和文件名
Debug.WriteLine(sDelDir);
DirInfo = new DirectoryInfo(sDelDir);
GetFilesAndDir(DirInfo); //如果不用这句遇到1个文件夹里有只读属性的文件删除当前文件夹会报错。
//遍歷本地下載文件目錄是文件的取消只讀屬性后刪除,否則繼續遍歷下面1個文件夾
DirInfo.Attributes = FileAttributes.Normal & FileAttributes.Directory;
Debug.WriteLine(sDelDir); //需要刪除的文件夾
if (DirInfo.Exists)
{
DirInfo.Delete(true);
}
return true;
}
catch(Exception ex)
{
sErrMsg = ex.Message;
return false;
}
}
//核实某个文件夹里面的所有文件是只读的就删除,是子文件夹的通过递归调用的方式继续找出子文件夹里的文件是只读的就删除
//还有子文件夹的继续调用直到最里面的1个文件夹。
private static void GetFilesAndDir(DirectoryInfo dir)
{
foreach (FileInfo fileInfo in dir.GetFiles())
{
if (fileInfo.IsReadOnly)
{
fileInfo.Attributes = FileAttributes.Normal;
}
fileInfo.Delete();
}
foreach (DirectoryInfo directory in dir.GetDirectories())
{
GetFilesAndDir(directory);
}
}