C#操作文件、文件夹(复制、删除、新增、设置只读)-技术&分享

C#操作文件、文件夹(复制、删除、新增、设置只读)-技术&分享

using System;
using System.IO;
using System.Windows;
using System.Windows.Documents;
using System.Xml;

namespace WorkItemCreateBussiness.HzClass
{
    public class HzFile
    {
        /// <summary>
        /// 删除指定文件夹下的所有文件和子文件夹
        /// </summary>
        /// <param name="fileFolder">指定删除的文件夹路径</param>
        /// <param name="isDeleteCurrentFolder">是否删除指定文件夹,true:删除;false:不删除</param>
        /// <returns>成功返回true,失败返回false</returns>
        public bool DeleteFolder(string fileFolder,bool isDeleteCurrentFolder)
        {
            try
            {
                if (Directory.Exists(fileFolder))
                {
                    foreach (var file in Directory.GetFiles(fileFolder, "*.*", SearchOption.AllDirectories))
                    {
                        File.SetAttributes(file, System.IO.FileAttributes.Normal);
                        File.Delete(file);
                    }
                    Directory.Delete(fileFolder, true);
                    if (!isDeleteCurrentFolder)
                    {
                        Directory.CreateDirectory(fileFolder);
                    } 
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return false;
            }
            return true;

        }

        /// <summary>
        /// Hzfile
        /// 获取指定文件的扩展名
        /// </summary>
        /// <param name="filePath">指定文件的文件夹绝对路径</param>
        /// <returns>返回文件的扩展名,如果文件扩展名为空或文件路径错误则返回空</returns>
        public string GetFileExtension(string filePath)
        {
            string filePathExtension = "";
            try
            {
                if (Directory.Exists(filePath))
                {
                    filePathExtension = filePath.Substring(filePath.LastIndexOf(".") + 1);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return "";
            } 
            return filePathExtension;
        }

        public void CopyBaseSql(string fromFolder, string toFolder) //拷贝sql目录下的标准sql文件到\Upgrade\BaseCode\Code目录下
        {
            try
            {

                string shortFolderName;
                if (toFolder.IndexOf("相关文档") > -1)
                {
                    if (Directory.Exists(toFolder))
                    {
                        Directory.Delete(toFolder, true);
                    }
                    Directory.CreateDirectory(toFolder);
                }
                //File.SetAttributes(to,FileAttributes.Hidden);

                // 子文件夹
                foreach (string sub in Directory.GetDirectories(fromFolder))
                {
                    shortFolderName = sub.Substring(sub.LastIndexOf("\\") + 1, sub.Length - sub.LastIndexOf("\\") - 1);
                    CopyBaseSql(sub + "\\", toFolder + "\\" + Path.GetFileName(sub));
                }
                //文件
                foreach (string file in Directory.GetFiles(fromFolder))
                {
                    File.Copy(file, toFolder + "\\" + Path.GetFileName(file), true);
                }
            }
            catch
            {
                //MessageBox.Show("创建sql文件失败");
            }
        }

        /// <summary>
        /// Hzfile
        /// 拷贝fromFolder文件夹所有的子目录和文件到toFolder文件夹下
        /// </summary>
        /// <param name="fromFolder">需要拷贝的文件夹</param>
        /// <param name="toFolder">拷贝到的文件夹的路径</param>
        /// <returns>如果存在异常返回true,否则返回false</returns>
        public bool CopyFolder(string fromFolder, string toFolder)
        {
            try
            {
                if (Directory.Exists(toFolder))
                {
                    Directory.Delete(toFolder, true);
                }
                Directory.CreateDirectory(toFolder);
                // 子文件夹
                foreach (string sub in Directory.GetDirectories(fromFolder))
                {
                    //shortFolderName = sub.Substring(sub.LastIndexOf("\\") + 1, sub.Length - sub.LastIndexOf("\\") - 1);
                    CopyFolder(sub + "\\", toFolder + "\\" + Path.GetFileName(sub));
                }
                //文件
                foreach (string file in Directory.GetFiles(fromFolder))
                {
                    File.Copy(file, toFolder + "\\" + Path.GetFileName(file), true);
                }
            }
            catch(Exception ex)
            {
                //MessageBox.Show("创建sql文件失败");
                return false;
            }
            return true;
        }


        /// <summary>
        /// Hzfile
        /// 拷贝fromFolder文件夹到toFolder文件夹下
        /// </summary>
        /// <param name="fromFolder">需要拷贝的文件夹</param>
        /// <param name="toFolder">拷贝到的文件夹的路径</param>
        /// <returns>如果存在异常返回true,否则返回false</returns>
        public bool CopyFileToCommonFolder(string fromFolder, string toCommonFolder)
        {
            try
            {
                if (Directory.Exists(toCommonFolder))
                {
                    Directory.Delete(toCommonFolder, true);
                }
                Directory.CreateDirectory(toCommonFolder);
                //文件
                foreach (string file in Directory.GetFiles(fromFolder,"*.*",SearchOption.AllDirectories))
                {
                    File.Copy(file, toCommonFolder + "\\" + Path.GetFileName(file), true);
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show("创建sql文件失败");
                return false;
            }
            return true;
        }

        /// <summary>
        /// Hzfile
        /// 拷贝fromFolder文件夹到toFolder文件夹下,
        /// </summary>
        /// <param name="fromFolder">需要拷贝的文件夹</param>
        /// <param name="toFolder">拷贝到的文件夹的路径</param>
        /// <returns>如果存在异常返回true,否则返回false</returns>
        public bool CopyFileToCommonFolder(string fromFolder, string toCommonFolder,XmlDocument xmlDoc,string xPath)
        {
            try
            {
                if (Directory.Exists(toCommonFolder))
                {
                    Directory.Delete(toCommonFolder, true);
                }
                Directory.CreateDirectory(toCommonFolder);
                //文件
                foreach (string file in Directory.GetFiles(fromFolder, "*.*", SearchOption.AllDirectories))
                {
                    string fileFullName = Path.GetFullPath(file);
                    string fileName = Path.GetFileName(file);
                    string folder=fileFullName.Substring(fromFolder.Length, fileFullName.Length - fromFolder.Length - fileName.Length - 1);
                    XmlNodeList fileNode = xmlDoc.SelectNodes(@"Mysoft.Data/UpgradeData/Package/Code/File[@fileName=" + "'" + fileName + "'and @folder=" + "'" + folder + "'" + "]");
                    if (fileNode.Count == 1)
                    {
                        string updateFileName = fileNode.Item(0).SelectSingleNode("FileContent").Attributes["fileName"].Value;
                        File.Copy(file, toCommonFolder + "\\" + updateFileName, true);
                    }

                    //string fileName = FileNode.ChildNodes[0].Attributes["fileName"].Value;
                    //File.Copy(file, toCommonFolder + "\\" + fileName, true);
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show("创建sql文件失败");
                return false;
            }
            return true;
        }


        /// <summary>
        /// Hzfile
        /// 判断rightFolder种的一个文件在leftFolder中是否存在
        /// </summary>
        /// <param name="leftFolder">修复前文件夹</param>
        /// <param name="rightFolder">修复后文件夹</param>
        /// <param name="rightFile">需要确认是否存在的文件rightFile</param>
        /// <returns>右侧文件夹map路径下文件rightFile,在左边文件夹map目录下也存在,存在则返回edit,否则返回add</returns>
        public string DiffFileExit(string leftFolder, string rightFolder,string rightFile)
        {
            try
            {
                if (Directory.Exists(leftFolder) && Directory.Exists(rightFolder))
                {
                    //if (File.Exists(leftFolder.Substring(0, rightFile.IndexOf("after")+6) +rightFile.Substring(rightFile.IndexOf("after")+5)))
                    if (File.Exists(leftFolder + rightFile))
                    {
                        return "edit";
                    }
                    else
                    {
                        return "add";
                    }
                }
                else
                {
                    return "";
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message);
                return "";
            }
            return "";

        }


        /// <summary>
        /// 文件夹、子文件夹、文件去只读
        /// </summary>
        /// <param name="dirPath">指定去只读的文件夹路径</param>
        /// <returns>成功返回true,失败返回false</returns>
        public bool SetNotReadOnly(string dirPath)
        {
            try
            {
                string[] dirPathes = Directory.GetDirectories(dirPath, "*.*", SearchOption.AllDirectories);
                foreach (var dp in dirPathes)
                {
                    if (!Directory.Exists(dp))
                    {
                        continue;
                    }

                    DirectoryInfo dir = new DirectoryInfo(dp);
                    dir.Attributes = FileAttributes.Normal & FileAttributes.Directory;

                    string[] filePathes = Directory.GetFiles(dp, "*.*", SearchOption.AllDirectories);
                    foreach (var fp in filePathes)
                    {
                        File.SetAttributes(fp, FileAttributes.Normal);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return false;
            }
            return true;
        }
    }
}


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
C# 中,你可以使用 `System.IO` 命名空间下的 `File` 类来复制文件。下面是一个简单的示例,演示如何从一个文件夹复制文件到另外一个文件夹: ```csharp using System.IO; class Program { static void Main(string[] args) { string sourceDirectory = @"C:\SourceFolder"; // 源文件夹路径 string targetDirectory = @"C:\TargetFolder"; // 目标文件夹路径 // 获取源文件夹中所有文件的路径 string[] files = Directory.GetFiles(sourceDirectory); // 遍历每个文件路径,并复制到目标文件夹 foreach (string file in files) { // 获取源文件文件名(包括扩展名) string fileName = Path.GetFileName(file); // 构建目标文件的完整路径 string targetPath = Path.Combine(targetDirectory, fileName); // 复制文件 File.Copy(file, targetPath, true); } Console.WriteLine("文件复制完成!"); } } ``` 在上述示例中,我们通过 `Directory.GetFiles()` 方法获取源文件夹中的所有文件路径。然后,使用 `Path.GetFileName()` 方法获取每个文件文件名(包括扩展名),并使用 `Path.Combine()` 方法构建目标文件的完整路径。最后,使用 `File.Copy()` 方法将源文件复制到目标文件夹中。第三个参数 `true` 表示如果目标文件夹中已存在同名文件,则覆盖它。 请确保你有足够的权限来读取源文件夹中的文件,并在目标文件夹中进行写入操作。另外,注意替换示例代码中的源文件夹和目标文件夹路径为你实际使用的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟空聊架构

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值