• Winform 基础知识 之文件夹操作


     

    using System.IO;

    /// <summary>
    /// 删除文件夹下所有文件
    /// </summary>
    /// <param name="dir"></param>
    public void DeleteFolder(string dir)
    {
    //如果存在这个文件夹删除之
    if (Directory.Exists(dir))
    {
    foreach (string d in Directory.GetFileSystemEntries(dir))
    {
    if (File.Exists(d))
    File.Delete(d);//直接删除其中的文件
    else DeleteFolder(d);//递归删除子文件夹
    }
    Directory.Delete(dir);
    //删除已空文件夹
    MessageBox.Show(dir + "文件夹删除成功");
    }
    else //如果文件夹不存在则提示
    MessageBox.Show(dir + "该文件夹不存在");
    }

    //========================================
    //实现一个静态方法将指定文件夹下面的所有内容Detele
    //测试的时候要小心操作,删除之后无法恢复。
    //========================================
    public static void DeleteDir(string aimPath)
    {
    try
    {
    //检查目标目录是否以目录分割字符结束如果不是则添加之
    if (aimPath[aimPath.Length - 1] !=
    Path.DirectorySeparatorChar)
    aimPath += Path.DirectorySeparatorChar;
    //得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
    //如果你指向Delete目标文件下面的文件而不包含目录请使用下面的方法
    //string[]fileList= Directory.GetFiles(aimPath);
    string[] fileList = Directory.GetFileSystemEntries(aimPath);
    //遍历所有的文件和目录
    foreach (string file in fileList)
    {
    //先当作目录处理如果存在这个
    //目录就递归Delete该目录下面的文件
    if (Directory.Exists(file))
    {
    DeleteDir(aimPath + Path.GetFileName(file));
    }
    //否则直接Delete文件
    else
    {
    File.Delete(aimPath + Path.GetFileName(file));
    }
    }
    //删除文件夹
    System.IO.Directory.Delete(aimPath, true);
    }
    catch (Exception e)
    {
    MessageBox.Show(e.ToString());
    }
    }

    ///拷贝文件夹(包括子文件夹)到指定文件夹下
    ///源文件夹和目标文件夹均需绝对路径
    ///格式:CopyFolder(源文件夹,目标文件夹)
    //----------------------------------------
    //作者 14
    //----------------------------------------
    /// <summary>
    /// 拷贝文件夹(包括子文件夹)到指定文件夹下
    /// 文件和文件夹分开复制,当是文件夹则递归复制
    /// </summary>
    /// <param name="strFromPath">待复制地址</param>
    /// <param name="strToPath">目标地址</param>
    public static void CopyFolder(string strFromPath,string strToPath)
    {
    //如果源文件夹不存在,则创建
    if (!Directory.Exists(strFromPath))
    {
    Directory.CreateDirectory(strFromPath);
    }
    //取得要拷贝的文件夹名
    string strFolderName = strFromPath.Substring(
    strFromPath.LastIndexOf("\") + 1,
    strFromPath.Length -
    strFromPath.LastIndexOf("\") - 1);
    //如果目标文件夹中没有源文件夹
    //则在目标文件夹中创建源文件夹
    if (!Directory.Exists(
    strToPath + "\" + strFolderName))
    {
    Directory.CreateDirectory(
    strToPath + "\" + strFolderName);
    }
    //创建数组保存源文件夹下的文件名
    string[] strFiles =
    Directory.GetFiles(strFromPath);
    //循环拷贝文件
    for (int i = 0; i < strFiles.Length; i++)
    {
    //取得拷贝的文件名,只取文件名,地址截掉。
    string strFileName = strFiles[i].Substring(
    strFiles[i].LastIndexOf("\") + 1,
    strFiles[i].Length -
    strFiles[i].LastIndexOf("\") - 1);
    //开始拷贝文件,true表示覆盖同名文件
    File.Copy(
    strFiles[i],
    strToPath + "\" + strFolderName +
    "\" + strFileName,
    true);
    }
    //创建DirectoryInfo实例
    DirectoryInfo dirInfo =
    new DirectoryInfo(strFromPath);
    //取得源文件夹下的所有子文件夹名称
    DirectoryInfo[] ZiPath =
    dirInfo.GetDirectories();
    for (int j = 0; j < ZiPath.Length; j++)
    {
    //获取所有子文件夹名
    string strZiPath = strFromPath + "\" +
    ZiPath[j].ToString();
    //把得到的子文件夹当成新的
    //源文件夹,从头开始新一轮的拷贝
    CopyFolder(
    strZiPath,
    strToPath + "\" + strFolderName);
    }
    }

    //========================================
    //实现一个静态方法将指定文件夹下面的所有
    //内容copy到目标文件夹下面
    //如果目标文件夹为只读属性就会报错
    //========================================
    public void CopyDir(string srcPath, string aimPath)
    {
    try
    {
    //检查目标目录是否以目录分割字符
    //结束如果不是则添加之
    if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)
    aimPath += Path.DirectorySeparatorChar;
    //判断目标目录是否存在如果不存在则新建之
    if (!Directory.Exists(aimPath))
    Directory.CreateDirectory(aimPath);
    //得到源目录的文件列表,该里面是包含
    //文件以及目录路径的一个数组
    //如果你指向copy目标文件下面的文件
    //而不包含目录请使用下面的方法
    //string[]fileList= Directory.GetFiles(srcPath);
    string[] fileList =
    Directory.GetFileSystemEntries(srcPath);
    //遍历所有的文件和目录
    foreach (string file in fileList)
    {
    //先当作目录处理如果存在这个
    //目录就递归Copy该目录下面的文件
    if (Directory.Exists(file))
    CopyDir(
    file,
    aimPath + Path.GetFileName(file));
    //否则直接Copy文件
    else
    File.Copy(
    file,
    aimPath + Path.GetFileName(file),
    true);
    }
    }
    catch (Exception e)
    {
    MessageBox.Show(e.ToString());
    }
    }

    上面说的删除方法,会把目录本身删了。

    如下面这个地址:string opath = @"C:Documents and SettingsAdministrator桌面211";

    执行上面删除方法,会把C:Documents and SettingsAdministrator桌面211中的211这个文件夹也删了,如果不想删,就用下面这个方法,n等于1的时候就不删。

    //========================================
    //实现一个静态方法将指定文件夹下面的所有内容Detele
    //测试的时候要小心操作,删除之后无法恢复。
    //========================================
    public static void DeleteDir(string aimPath, int n)
    {
    try
    {
    //检查目标目录是否以目录分割字符结束如果不是则添加之
    if (aimPath[aimPath.Length - 1] !=
    Path.DirectorySeparatorChar)
    aimPath += Path.DirectorySeparatorChar;
    //得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
    //如果你指向Delete目标文件下面的文件而不包含目录请使用下面的方法
    string[] fileList = Directory.GetFiles(aimPath);
    //string[] fileList = Directory.GetFileSystemEntries(aimPath);
    //遍历所有的文件和目录
    foreach (string file in fileList)
    {
    //先当作目录处理如果存在这个
    //目录就递归Delete该目录下面的文件
    if (Directory.Exists(file))
    {
    DeleteDir(aimPath + Path.GetFileName(file), n);
    }
    //否则直接Delete文件
    else
    {
    File.Delete(aimPath + Path.GetFileName(file));
    }
    }
    //删除文件夹
    if (n == 1)
    {
    DirectoryInfo dirInfo = new DirectoryInfo(aimPath);
    //取得源文件夹下的所有子文件夹名称
    DirectoryInfo[] ZiPath = dirInfo.GetDirectories();
    for (int j = 0; j < ZiPath.Length; j++)
    {
    //获取子文件夹名
    string strZiPath = aimPath + "\" + ZiPath[j].ToString();
    //删除当前文件夹
    System.IO.Directory.Delete(strZiPath, true);
    }
    }
    else
    {
    System.IO.Directory.Delete(aimPath, true);
    }
    }
    catch (Exception e)
    {
    MessageBox.Show(e.ToString());
    }
    }

    http://blog.csdn.net/jingdian14/article/details/7923470

  • 相关阅读:
    nginx使用vhost子目录
    nginx服务报错解决
    反向代理远端 单台tomcat 使用域名代理
    反向代理远端 单台tomcat 使用ip+端口
    nginx反向代理本地 两台web负载均衡 使用域名代理
    nginx反向代理本地 两台web负载均衡 使用ip+端口代理
    nginx反向代理本地 单台wed -使用域名代理
    nginx反向代理本地 单台wed -使用ip+端口代理
    php 在函数内引用全局变量 讲解引用
    Xdebug的安装与使用
  • 原文地址:https://www.cnblogs.com/androllen/p/3509218.html
Copyright © 2020-2023  润新知