C#批量删除文件和文件夹(包含指定和所有)
根据删除的要求不同,有不同的删除方法。如果要删除某个文件夹中所有子文件夹和文件,则可以把此文件夹删除即可;如果要删除某个文件夹中指定的文件或者指定的文件夹,就得遍历循环删除。
下面针对不同的需求,分别给出不同的代码实例,以满足不同用户的多种需要,先从最简单的开始。
一、C# 如果文件存在,则删除
1、物理路径
public void DeleteFileIfExists(string path)
{
if (File.Exists(path))
File.Delete(path);
}
调用:DeleteFileIfExists(@"F:\temp\test.txt");
2、虚拟路径
public void DeleteFileIfExistsVirtualPath(string path)
{
path = Server.MapPath(path);//把虚拟路径转为物理路径
if (File.Exists(path))
File.Delete(path);
}
调用:DeleteFileIfExistsVirtualPath("/htm/test.html");
二、C#批量删除某一文件夹中的所有文件和子文件夹
/// <summary>
/// C#删除文件夹中的所有文件和子文件夹
/// </summary>
/// <param name="dirPath">待删除文件夹路径</param>
/// <returns>删除返回真,否则返回假</returns>
private bool DelForlder(string dirPath)
{
if (Directory.Exists(dirPath))
{
DirectoryInfo di = new DirectoryInfo(dirPath);
di.Delete(true);//true删除子目录和文件
return true;
}
return false;
}
调用方法:DelForlder(@"E:\files\test");
三、C#批量删除某一文件夹中的所有文件
/// <summary>
/// C#批量删除某一文件夹中的所有文件
/// </summary>
/// <param name="dirPath">待删除文件夹路径</param>
/// <returns>删除所有文件返回真,否则返回假</returns>
private bool DelFiles(string dirPath)
{
DirectoryInfo di = new DirectoryInfo(dirPath);
FileInfo[] arrFi = di.GetFiles("*.*");
try
{
foreach (FileInfo fi in arrFi)
{
File.Delete(di + "\\" + fi.Name);
}
returntrue;
}
catch
{
return false;
}
}
调用方法:DelFiles(@"E:\files\test");
四、C#批量删除某一文件夹中的所有子文件夹
/// <summary>
/// C#批量删除某一文件夹中的所有子文件夹
/// </summary>
/// <param name="dirPath">待删除文件夹路径</param>
/// <returns>删除所有文件夹返回真,否则返回假</returns>
private bool DelFolders(string dirPath)
{
DirectoryInfo di = new DirectoryInfo(dirPath);
DirectoryInfo[] arrDi = di.GetDirectories();
try
{
foreach (DirectoryInfo dirInfo in arrDi)
{
Directory.Delete(di + "\\" + dirInfo.ToString(), true);
}
return true;
}
catch
{
return false;
}
}
调用方法:DelFolders(@"G:\files\test");
五、C#批量删除文件夹中指定文件
/// <summary>
/// C#批量删除文件夹中指定文件
/// </summary>
/// <param name="dirPath">待删除文件夹路径</param>
/// <param name="files">待删除文件数组</param>
/// <returns>删除所有指定文件返回真,否则返回假</returns>
private bool DelAppointFiles(string dirPath, string[] files)
{
DirectoryInfo di = new DirectoryInfo(dirPath);
FileInfo[] arrFi = di.GetFiles("*.*");
try
{
foreach (FileInfo fi in arrFi)
{
foreach (string s in files)
{
if(fi.Name.Equals(s))
File.Delete(di + "\\" + fi.Name);
}
}
return true;
}
catch
{
return false;
}
}
调用方法:
string[] arr = { "test.txt1", "test.txt2" };
DelAppointFiles(@"E:\files\test", arr);