C# 清空文件夹内容和复制文件夹内容

/// <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()) + @"\";
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值