`

C#文件操作源码 递归复制一个目录 递归删除文件 和 文件夹

阅读更多

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Common.Files
{
    public class FileOperator
    {
        /// <summary>
        ///
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <param name="encoding">编码</param>
        /// <returns>文件内容</returns>
        public string ReadFile(string path, System.Text.Encoding encoding)
        {
            string tempContent = "";
            using (StreamReader sr = new StreamReader(path, encoding))
            {
                tempContent = sr.ReadToEnd();
            }
            return tempContent;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="path">文件的路径</param>
        /// <param name="append">是否追加</param>
        /// <param name="encoding">编码</param>
        /// <param name="content">内容</param>
        /// <returns>是否成功</returns>
        public bool WriteFile(string path,bool append,System.Text.Encoding encoding,string content)
        {
            bool state = false;
            try
            {
                using (StreamWriter sw = new StreamWriter(path, append, encoding))
                {
                    sw.Write(content);
                    sw.Flush();
                    state = true;
                }
            }
            catch
            {
 
            }
            return state;
        }
        /// <summary>
        /// 拷贝一个路径下的文件夹和文件
        /// </summary>
        /// <param name="olddirectory"></param>
        /// <param name="newdirectory"></param>
        /// <returns></returns>
        public bool CopyDirectoryAndFiles(string olddirectory, string newdirectory)
        {
            bool state = false;
            try
            {
                DirectoryInfo dis = new DirectoryInfo(newdirectory);
                if (!dis.Exists)
                {
                    Directory.CreateDirectory(newdirectory);
                }
                CopyAll(olddirectory, newdirectory, "");
                state = true;
            }
            catch
            {
 
            }
            return state;
        }
        /// <summary>
        /// 递归拷贝一个文件夹的所有文件
        /// </summary>
        /// <param name="olddirectory"></param>
        /// <param name="newdirectory"></param>
        /// <param name="dir"></param>
        protected void CopyAll(string olddirectory, string newdirectory, string dir)
        {
            DirectoryInfo dis = new DirectoryInfo(dir.Length > 0 ? (dir) : (olddirectory));
            FileInfo[] files = dis.GetFiles();
            foreach (FileInfo fi in files)
            {

                try
                {
                    //拷贝文件
                    File.Copy(fi.FullName, string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), fi.Name));

                }
                catch (Exception ex)
                {
                    try
                    {
                        File.Delete(string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), fi.Name));
                        //string temp = ex.Message;
                        File.Copy(fi.FullName, string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), fi.Name));
                    }
                    catch
                    {

                    }
                }


            }
            if (dis.GetDirectories().Length > 0)
            {
                for (int i = 0; i < dis.GetDirectories().Length; i++)
                {
                    //创建目录
                    string tempNewPath = string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), dis.GetDirectories()[i].Name);
                    if (!Directory.Exists(tempNewPath))
                        Directory.CreateDirectory(tempNewPath);
                    CopyAll(olddirectory, newdirectory, dis.GetDirectories()[i].FullName);
                }
            }


        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="oldFilePath"></param>
        /// <param name="newFilePath"></param>
        /// <returns></returns>
        public bool CopyFile(string oldFilePath, string newFilePath)
        {
            bool state = false;
            File.Copy(oldFilePath, newFilePath);
            return state;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="directory"></param>
        /// <returns></returns>
        public bool DelteDirectory(string directory)
        {
            bool state = false;
            DeleteDirectoryAndFiles(directory);
            return state;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="path"></param>
        protected void DeleteDirectoryAndFiles(string path)
        {
            DirectoryInfo di = new DirectoryInfo(path);
            if (di.GetFiles().Length > 0)
                DeleteFiles(path);
         
           DirectoryInfo[] dis = di.GetDirectories();
           if (dis.Length > 0)
           {
               foreach (DirectoryInfo tempdi in dis)
               {
               
                   DeleteDirectoryAndFiles(tempdi.FullName);
                   if (tempdi.GetFiles().Length < 1 && tempdi.GetDirectories().Length < 1)
                       tempdi.Delete();
               }
           }
        }
        /// <summary>
        /// 删除文件夹的所有文件
        /// </summary>
        /// <param name="path"></param>
        protected void DeleteFiles(string path)
        {
            DirectoryInfo di = new DirectoryInfo(path);
            FileInfo[] fis = di.GetFiles();
            foreach (FileInfo fi in fis)
            {
                try
                {
                    fi.Delete();
                }
                catch
                {
                    continue;
                }
            }

        }
      

       

    }
}

分享到:
评论

相关推荐

    C# 文件夹的拷贝与删除案例源码

    文件夹的拷贝通常涉及到递归操作,因为一个文件夹可能包含多个子文件夹和文件。`System.IO.DirectoryInfo`类提供了`CopyTo`方法,可以用来复制整个目录结构。以下是一个简单的文件夹拷贝示例: ```csharp using ...

    简单的C#文件浏览源码

    4. 文件夹和文件信息的展示:在程序中,可能会有一个函数负责递归遍历指定目录及其子目录,获取每个文件和子文件夹的信息,并将这些信息填充到UI组件中。例如,使用Directory.GetFiles和Directory.GetDirectories...

    C#文件查找(按内容、文件名称查找)源码

    在C#编程中,文件查找是一项常见的任务,...通过以上知识,我们可以构建一个完整的C#文件查找工具,能够高效地按照文件名称或内容进行查找,并适用于各种场景。在实际开发中,可以根据具体需求调整和优化这些代码片段。

    代码修改批量复制小工具(附C#源码)

    一、功能描述: 该软件只负责改掉过的文件,对于查找哪些文件被修改过使用非常方便。 特别适用于软件开发后期的维护工作,快速搜索...四、下载包中含有C#源码,对文件夹递归批量操作处理,是学习C#文件夹操作有帮助

    递归(c#.net源码).rar

    这个名为“递归(c#.net源码).rar”的压缩包文件很可能包含了一系列示例代码,演示了如何在C#.NET环境中实现递归。 首先,让我们深入理解递归的基本原理。递归是当一个函数在其定义中调用自身时发生的情况。这种...

    C# 批量删除文件,文件夹源代码

    本项目“C# 批量删除文件,文件夹源代码”提供了一个实用工具,用于高效地清理指定目录下的文件和文件夹,这对于系统维护、软件开发以及日常的数据清理工作来说非常有用。下面我们将深入探讨这个程序可能涉及的关键...

    wince整个文件夹复制源码

    要实现文件夹的递归复制,我们需要编写一个算法,该算法能够遍历目标文件夹中的所有文件和子文件夹,并逐个复制到新的位置。以下是一些关键步骤: 1. **遍历目录**:使用FindFirstFile和FindNextFile函数遍历源...

    C#文件搜索_C#_文件搜索_

    本项目提供了一套C#文件搜索的源码,对于初学者来说,这是一个很好的学习实例,可以帮助理解如何在C#环境中实现文件和目录的搜索功能。 首先,我们要了解C#中的`System.IO`命名空间,它提供了对文件、目录和流的...

    C# 动态搜索文件或文件夹

    在窗体上可以放置两个控件:一个TextBox用于输入要搜索的文件或文件夹名称,另一个Button作为触发搜索操作的按钮。此外,还可以添加一个ListView或者DataGridView来显示搜索结果。 1. **C# 源码解析**: - 文件...

    定时删除日志文件含C#源码

    总的来说,"定时删除日志文件含C#源码"是一个实用的工具,它结合了C#的编程优势和Windows系统的定时任务功能,帮助系统管理员有效地管理和清理日志文件,保持系统的高效运行。对于初学者,这是一个学习C#编程和文件...

    C# 动态复制多个文件的源码Csharpcopy

    这些类提供了丰富的静态方法,用于读取、写入、创建、移动和复制文件。 1. **FileInfo类**:代表一个文件的信息,包括路径、大小、是否存在等。我们可以使用FileInfo的CopyTo方法来复制单个文件。 2. **File类**:...

    易语言源码同步复制文件夹源码.rar

    在IT领域,文件同步和复制是常见的操作,尤其在数据备份、文件分发和多设备协作中显得尤为重要。 文件夹同步的基本原理是对比两个文件夹中的内容,找出差异,并将变化的部分从源文件夹复制到目标文件夹。在这个...

    sharpziplib文件夹递归压缩解压缩源码.rar

    这个"sharpziplib文件夹递归压缩解压缩源码.rar"是一个示例项目,专注于解决使用SharpZipLib库进行文件夹及其子文件夹递归压缩和解压缩的问题。下面我们将深入探讨SharpZipLib库以及如何实现递归压缩和解压缩。 ...

    C#文件夹操作实例

    本实例将深入探讨如何使用C#来操作特定后缀名的文件夹,包括查找、遍历以及删除其中的子文件和子文件夹。我们将主要关注以下几个核心知识点: 1. **文件和文件夹操作的基础类**: 在C#中,`System.IO`命名空间提供...

    FileManage_fileManage_C#_搜索文件_

    "FileManage_fileManage_C#_搜索文件_"这个项目显然旨在提供一套工具,涵盖了文件操作的多个核心功能,包括文件和文件夹的管理、批量操作以及高级搜索功能。让我们详细探讨这些关键知识点。 1. **文件和文件夹的...

    C# 动态复制多个文件的源码,高手跳过

    最后,`File.Copy()`执行实际的复制操作,第二个参数是目标文件路径,第三个参数为布尔值,表示是否覆盖已经存在的目标文件。 然而,上述代码只适用于单个目录下的文件复制。如果需要递归复制整个目录结构,包括子...

    C#查询目录及其所有子目录源码

    以下是一个简单的C#源码示例,展示如何遍历并打印指定目录及其所有子目录下的文件和子目录: ```csharp using System; using System.IO; class Program { static void Main(string[] args) { string root...

    C#解压缩文件夹保存目录结构

    本主题聚焦于“C#解压缩文件夹保存目录结构”,这是一个在软件开发中常见的任务,涉及到文件系统操作和压缩算法的应用。下面将详细阐述相关知识点。 首先,解压缩文件夹通常会用到第三方库,如SharpZipLib或System....

    C# 获取文件目录 实例源码(窗体技巧)

    首先,C#提供了丰富的类库来处理文件和目录操作,其中`System.IO`命名空间中的`Directory`类和`FileInfo`类是核心工具。`Directory`类提供了对文件夹的操作,如获取、创建、删除目录;而`FileInfo`类则用于处理单个...

    C# 复制(Coppy)文件

    `File`类提供了对单个文件的操作方法,如读取、写入、创建和复制,而`Directory`类则用于处理文件夹的相关操作,如创建、删除和遍历文件夹结构。 复制单个文件的基本步骤如下: 1. 使用`File`类的`Exists`方法检查...

Global site tag (gtag.js) - Google Analytics