c#文件复制,移动,新建

作者:袖梨 2022-06-25

下面这段代码可以对C#中对文件的新建 移动 删除 复制操作等有需要的朋友可以参考一下。

///


        /// 判断文件或文件夹是否存在
        ///

        /// 指定文件及其路径
        /// 判断方式
        /// 返回布尔值 文件夹是否存在 true 存在,false 不存在
        public static bool IsExist(string file, FsoMethod method)
        {
            if (method == FsoMethod.File)
            {
                return File.Exists(file);
            }
            else if (method == FsoMethod.Folder)
            {
                return Directory.Exists(file);
            }
            else
            {
                return false;
            }
        }

        #region "新建"

        ///


        /// 新建文件或文件夹
        ///

        /// 文件或文件夹及其路径
        /// 新建方式
        public static void Create(string file, FsoMethod method)
        {
            try
            {
                if (method == FsoMethod.File)
                {
                    WriteFile(file, string.Empty);
                }
                else if (method == FsoMethod.Folder)
                {
                    Directory.CreateDirectory(file);
                }
            }
            catch
            {
                throw new UnauthorizedAccessException("没有权限!");
            }
        }

        #endregion

        #region "复制"

        #region "复制文件"
        ///


        /// 复制文件,如果目标文件已经存在则覆盖掉
        ///

        /// 源文件
        /// 目标文件
        public static void CopyFile(string oldFile, string newFile)
        {
            File.Copy(oldFile, newFile, true);
        }

        ///


        /// 以流的形式复制拷贝文件
        ///

        /// 源文件
        /// 目标文件
        /// 是否复制成功 true 成功,false 失败
        public static bool CopyFileStream(string oldPath, string newPath)
        {
            try
            {
                // 建立两个FileStream对象
                FileStream fileStreamOld = new FileStream(oldPath, FileMode.Open, FileAccess.Read);
                FileStream fileStreamNew = new FileStream(newPath, FileMode.Create, FileAccess.Write);

                //// 分别建立一个读写类
                BinaryReader br = new BinaryReader(fileStreamOld);
                BinaryWriter bw = new BinaryWriter(fileStreamNew);

                //// 将读取文件流的指针指向流的头部
                br.BaseStream.Seek(0, SeekOrigin.Begin);
                //// 将写入文件流的指针指向流的尾部
                br.BaseStream.Seek(0, SeekOrigin.End);

                while (br.BaseStream.Position < br.BaseStream.Length)
                {
                    //// 从br流中读取一个Byte并马上写入bw流
                    bw.Write(br.ReadByte());
                }
                //// 释放所有被占用的资源
                br.Close();
                bw.Close();
                fileStreamOld.Flush();
                fileStreamOld.Close();
                fileStreamNew.Flush();
                fileStreamNew.Close();
                return true;
            }
            catch
            {
                return false;
            }
        }

        #endregion

        #region "复制文件夹"

        ///


        /// 复制文件夹中的所有内容及其子目录所有文件
        ///

        /// 源文件夹及其路径
        /// 目标文件夹及其路径
        public static void CopyDirectory(string oldDir, string newDir)
        {
            DirectoryInfo directoryInfo = new DirectoryInfo(oldDir);
            CopyDirInfo(directoryInfo, oldDir, newDir);
        }

        #endregion

        #endregion

        #region "移动"

        ///


        /// 移动文件或文件夹
        ///

        /// 原始文件或文件夹
        /// 目标文件或文件夹
        /// 移动方式:1、为移动文件,2、为移动文件夹
        public static void Move(string oldFile, string newFile, FsoMethod method)
        {
            if (method == FsoMethod.File)
            {
                File.Move(oldFile, newFile);
            }

            if (method == FsoMethod.Folder)
            {
                Directory.Move(oldFile, newFile);
            }
        }

        #endregion

        #region "删除"

        ///


        /// 删除文件或文件夹
        ///

        /// 文件或文件夹及其路径
        /// 删除方式:1、为删除文件,2、为删除文件夹
        public static void Delete(string file, FsoMethod method)
        {
            if (method == FsoMethod.File)
            {
                if (File.Exists(file))
                {
                    File.Delete(file);
                }
            }

            if (method == FsoMethod.Folder)
            {
                if (Directory.Exists(file))
                {
                    Directory.Delete(file, true);   // 删除该目录下的所有文件以及子目录
                }
            }
        }

        #endregion

相关文章

精彩推荐