/// <summary>
/// 清空文件夹
/// </summary>
/// <param name="path">路径</param>
/// <returns>是否成功</returns>
/// <remarks>删除指定文件夹中所有文件</remarks>
public static bool ClearDirectory(string path)
{
try
{
if (string.IsNullOrEmpty(path)
|| !Directory.Exists(path))
{
return true; // 如果参数为空,则视为已成功清空
}
// 删除当前文件夹下所有文件
foreach (string strFile in Directory.GetFiles(path))
{
File.Delete(strFile);
}
// 删除当前文件夹下所有子文件夹(递归)
foreach (string strDir in Directory.GetDirectories(path))
{
Directory.Delete(strDir, true);
}
return true;
}
catch (Exception ex)
{
Debug.WriteLine(string.Format("清空 {0} 异常, 消息:{1}, 堆栈:{2}"
, path, ex.Message, ex.StackTrace));
return false;
}
}
/// <summary>
/// 复制文件夹(递归)
/// </summary>
/// <param name="srcPath">源文件夹路径</param>
/// <param name="dstPath">目的文件夹路径</param>
/// <returns>是否成功</returns>
public static bool CopyDir(string srcPath, string dstPath)
{
if (string.IsNullOrEmpty(srcPath)
|| !Directory.Exists(srcPath)
|| !MakeSureFolderExists(dstPath)
)
{
return false;
}
DirectoryInfo diSrc = new DirectoryInfo(srcPath); // 源
DirectoryInfo diDst = new DirectoryInfo(dstPath); // 目的
try
{
foreach (FileInfo fi in diSrc.GetFiles()) // 复制文件
{
File.Copy(fi.FullName, PlatformConfig.MakeSureEndWithPathSplitter(diDst.FullName) + fi.Name, true);
}
}
catch(Exception ex)
{
Debug.WriteLine("复制文件出错:", ex.Message, ex.StackTrace);
return false;
}
foreach (DirectoryInfo di in diSrc.GetDirectories()) // 复制文件夹
{
if (!CopyDir(di.FullName, MakeSureEndWithPathSplitter(diDst.FullName) + di.Name))
{
return false;
}
}
return true;
}
/// <summary>
/// 确保目录名以路径分隔符结尾
/// </summary>
/// <param name="dirpath">目录名</param>
/// <returns>以路径分隔符结尾的目录名</returns>
public static string MakeSureEndWithPathSplitter(string dirpath)
{
if (string.IsNullOrEmpty(dirpath))
{
return string.Empty;
}
else
{
if (!dirpath.EndsWith(WINDOWS_PATH_SPLITTER))
{
return dirpath + @"\";
}
else
{
return dirpath.TrimEnd(@"\".ToCharArray()) + @"\";
}
}
}